【发布时间】:2013-10-20 17:39:30
【问题描述】:
我想将对象met 向下传递给函数sf,但得到对象未找到错误。我认为这可能与顶层函数调用的环境有关,它没有传递给子函数:
f <- function(fname,x,met=c('sum','subs')){
.env <- environment() ## identify the environment
do.call(fname,list(x,met),envir=.env)
}
sf <- function(x,...){
if (met== 'sum') x + 100 else x - 100
}
f('sf',1:10,met='sum')
【问题讨论】:
-
f('sf',1:10,met='sum')在我的机器上给出[1] 101 102 103 104 105 106 107 108 109 110并且没有错误消息。但是,对于met='subs',结果是一样的。 -
@PhillipD 谢谢,我确实得到了错误,但无论如何 G. Grothendieck 找到了它的来源。
标签: r environment do.call