2017-01-11 29 views
0

當我創建一個簡單的函數,它使用mget來調用在.GlobalEnv中分配的一個對象名稱,而另一個對象已在函數環境中分配時,我無法使mget函數在兩種環境中查找。如何讓函數在(看似)嵌套環境(R)中搜索?

例子:

> abc <- 5 
> 
> f1 <- function(x) { 
+ bcd <- 6 
+ foo <- c('abc','bcd') 
+ mget(foo) 
+ } 
>  
> f1() 
Error: value for ‘abc’ not found 

是否有一種方式來獲得在這個例子中mget功能找到這兩個對象?

我試過將mgetenvir參數改爲許多不同的東西,沒有任何運氣。


注:我不想 「改變」 的內部對象的環境(例如,使用<<-assign(bcd,envir=.GlobalEnv)

回答

1

繼承= TRUE

f1 <- function(x) { 
bcd <- 6 
foo <- c('abc','bcd') 
mget(foo, inherits=TRUE) 
} 
f1()