我想知道是否可以简化以下函数的代码(即,如果代码的一部分: d0 = p$d0,d11 = p$d11,d12 = p$d12,k11 = p$k11,k12 = p$k12可以用某个函数替换),因为我只是访问通过列表p传递给函数的变量。
这是函数的R代码:
equation = function(p){
d0 = p$d0
d11 = p$d11
d12 = p$d12
k11 = p$k11
k12 = p$k12
result = d0 + d11*k11 + d12*k12
return(result)
}
equation(list(d0=1,d11=2,d12=3,k11=100,k12=1000))发布于 2017-12-20 16:05:34
不需要任何花哨的东西。您没有足够的资源在每个前面键入p$是过于累赘的,并且您不需要在本地分配任何东西。不需要return,因此我们实际上可以用一行体编写函数,如下所示:
equation <- function(p){
p$d0 + p$d11*p$k11 + p$d12*p$k12
}发布于 2017-12-20 15:02:41
您可以简单地将元素作为函数参数传递:
equation <- function(d0, d11, d12, k11, k12){
d0 + d11*k11 + d12*k12
}
equation( d0=1, d11=2, d12=3, k11=100, k12=1000)
[1] 3201科林
发布于 2017-12-20 15:07:47
另一个选项是使用zeallot包,它具有解压缩赋值%<-%。
library(zeallot)
equation = function(p){
c(d0, d11, d12, k11, k12) %<-% p
result = d0 + d11*k11 + d12*k12
return(result)
}
equation(list(d0=1,d11=2,d12=3,k11=100,k12=1000))
## 3201https://stackoverflow.com/questions/47908759
复制相似问题