2011-06-05 63 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