为什么以下不起作用?也就是说,为什么在一个环境中调用“$< - ”在函数之外没有明显的效果?
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
谢谢!
答案 0 :(得分:7)
它确实有效果,而不是你正在寻找的那个!
> myAssign(e, "x", 1)
<environment: 0x1dcd198>
> ls(e)
[1] "name"
原因是$<-
以非标准的方式评估其第二个参数(因为它必须在x
中获得eval(x)
而不是e$x <- 1
,如果是没有任何意义。试试env[[name]] <- value