2011-06-05 36 views
3

爲什麼以下不工作?也就是說,爲什麼不在環境中調用「$ <-」在函數之外有明顯的作用?

myAssign <- function(env, name, value) { 
    "$<-"(env, name, value) 
} 
e <- new.env() 
myAssign(e, "x", 1) 
e$x # NULL 

而且還

myAssign(e, "x", 1)$x # NULL 

然而,如果我們這樣做在頂層:

"$<-"(e, "x", 1) 
e$x # 1 

謝謝!

回答

7

它確實有效果,只是不是你要找的那個!

> myAssign(e, "x", 1) 
<environment: 0x1dcd198> 
> ls(e) 
[1] "name" 

的原因是$<-評估其第二個參數在一個非標準的方式(因爲它必須,得到x而不是eval(x)e$x <- 1,如果讓任何意義。嘗試env[[name]] <- value