我有以下兩個功能:傳遞變量
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
但我寧願避免全球分配(在實際的代碼,我不希望有流浪全局對象.. )
所以問題是,我如何讓fxt(在f1中定義)對f2可見?
感謝
(並且如果你不知道,現實生活中的F2比較複雜,使得傳遞變量的名稱是有道理的;在任何情況下,它是由其他人創作的功能上,我無法控制,所以解決方案應該來自f1方)。
非常好,謝謝! – jfmoyen
增加了第三個選項 –