2016-07-28 21 views
1

的代码:分配到环境中的R

env <- new.env() 
assign("X", value = 2, pos = env) 
eval(X, envir = env) 

结果在一个错误: “X未找到”

然而:

ls(envir = env) 

返回 “X”

为什么eval不返回2?

回答

4

这应该工作:

eval(quote(X),envir=env) 

问题是它试图评估X,然后把它传递给eval但X在你的主环境没有价值,因此给出了一个错误。把quote告诉EVAL寻找Xenv

+3

技术上,'报价(X)''告诉* eval'不找'X'但*(即在当前的环境); 'envir = env'告诉它看看'env',一旦它开始寻找... –

+3

你也可以使用'evalq(X,envir = env)'作为引用的“快捷方式” – MrFlick

+0

@ BenBolker好点我是懒惰 – Carl