“$< - ”和环境

时间:2011-06-05 17:43:50

标签: r

为什么以下不起作用?也就是说,为什么在一个环境中调用“$< - ”在函数之外没有明显的效果?

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

谢谢!

1 个答案:

答案 0 :(得分:7)

它确实有效果,而不是你正在寻找的那个!

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

原因是$<-以非标准的方式评估其第二个参数(因为它必须在x中获得eval(x)而不是e$x <- 1,如果是没有任何意义。试试env[[name]] <- value