【发布时间】:2017-07-17 13:11:22
【问题描述】:
myfun1 = function(dummy){
dummy = dummy
x2 = x.rand + 1
return(x2)
}
myfun2 = function(dummy2){
dummy2 = dummy2
x.rand = rnorm(10)
myfun1(dummy2)
}
> myfun2(3)
myfun1(dummy2) 中的错误:找不到对象“x.rand”
我有一个内部函数 myfun1,它只能接受 1 个参数 (dummy) 并将 1 添加到我的 x.rand 向量中。我还有一个外部函数myfun2,它将x.rand 向量定义为正态分布的随机样本。我的目标是能够将x.rand 对象传递给myfun1。如果不将其作为参数,我该如何做到这一点?
我使用save() 在这里查看了this 的帖子,但我不太明白......并且想知道是否有更简单的方法?
【问题讨论】:
-
猜猜你可以使用
x.rand <<- rnorm(10)将x.rand分配给全局环境。 ... 有效,但有许多缺点,通常可以避免。 -
为什么不想让它成为参数?
-
另一种选择是在 myfun2 中定义 myfun1。然后它将可以访问 myfun2 环境中的对象。
-
@FlorianMaas
myfun1应该是我传递给nmkb(fn = myfun1, par = c(...))函数调用的目标函数。它只能接受 1 个参数(即par = c(...))。除了par = c(...),我想传递另一个 -
或者,您可以从 fun2 返回 list(dummy1,x.rand),并将其用作 fun1 中的单个输入参数,如 dummy = input_list[[1]] 和 x.rand =输入列表[[2]]。不确定这是否有帮助,但只是大声思考。