【发布时间】:2015-11-05 10:12:29
【问题描述】:
我有以下两个功能:
f1<-function(){
txt<-1234
f2(where="txt")
}
f2<-function(where){
foo<-eval(parse(text = where))*2
return(foo)
}
调用 f1() 时,我希望它返回 2468。但是
> f1()
Error in eval(expr, envir, enclos) : object 'txt' not found
我不明白为什么,特别是为什么 f2 不知道 txt。当然它不是在自己的环境中定义的,而是在调用者环境中定义的(在f1中),我认为f1中定义的所有东西都应该对f2可见?
当然,如果在 f1 我有
txt<<-1234
然后
> f1()
[1] 2468
但我宁愿避免全局分配(在实际代码中,我不希望有杂散的全局对象......)
所以问题是,我怎样才能让 txt(在 f1 中定义)对 f2 可见?
谢谢
(如果您想知道,现实生活中的 f2 更复杂,因此传递变量的名称是有意义的;无论如何,它是由其他人编写的函数,我无法控制,所以解决方案应该来自 f1 方面)。
【问题讨论】:
标签: r