在R中访问函数中的变量
我想知道是否有可能简化以下函数的代码(即,如果代码部分:d0=p$d0,d11=p$d11,d12=p$d12,k11=p$k11,k12=p$k12可以被某个函数替换),因为我只是通过列表p访问传递给函数的变量 这是函数的R代码:在R中访问函数中的变量,r,R,我想知道是否有可能简化以下函数的代码(即,如果代码部分: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 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))
您只需将元素作为函数参数传递:
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
等式您只需将元素作为函数参数传递:
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
等式另一个选项是使用Zeellot
包,该包具有解包分配%另一个选项是使用Zeellot
包,该包具有解包分配%不需要任何花哨的东西。您没有足够的资源,在每个文件前面键入p$
过于繁重,您不需要在本地分配任何内容<代码>返回
不是必需的,因此我们实际上可以使用单行正文编写函数,如下所示:
equation <- function(p){
p$d0 + p$d11*p$k11 + p$d12*p$k12
}
等式不需要任何花哨的东西。您没有足够的资源,在每个文件前面键入p$
过于繁重,您不需要在本地分配任何内容<代码>返回
不是必需的,因此我们实际上可以使用单行正文编写函数,如下所示:
equation <- function(p){
p$d0 + p$d11*p$k11 + p$d12*p$k12
}
等式我使用list2env(p,envir=environment())找到了解决方案
方程(列表(d0=1,d11=2,d12=3,k11=100,k12=1000))我使用列表2ENV(p,envir=environment()找到了解决方案
方程(列表(d0=1,d11=2,d12=3,k11=100,k12=1000))您不需要将它们分配给局部变量p$d0+p$d11*p$k11+p$d12*p$k12
可能是你函数的全部内容。@Dason请在更复杂(而不是更简单)的问题被接受之前将其作为答案提出…equation@Spacedman我没有将其作为答案来写,因为我认为这个问题并不完全合适。看起来更像是代码审查类型的东西。但我想我会把它作为一个答案,因为我确实认为它可能是解决这个特定问题和其他我不太喜欢的答案的最佳方法。你应该将你的解决方案作为答案发布,而不是将其编辑到你的问题中。你不需要将它们分配给局部变量p$d0+p$d11*p$k11+p$d12*p$k12
可能是你函数的全部内容。@Dason请在更复杂(而不是更简单)的问题被接受之前将其作为答案提出…equation@Spacedman我没有将其作为答案来写,因为我认为这个问题并不完全合适。看起来更像是代码审查类型的东西。但我想我会把它作为一个答案,因为我确实认为它可能是解决这个问题和其他我并不真正喜欢的答案的最佳方法。你应该将你的解决方案作为答案发布,而不是将其编辑到你的问题中。