【问题标题】:Assigning to an environment in R分配给 R 中的环境
【发布时间】:2016-07-28 20:36:13
【问题描述】:

代码:

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

导致错误:“X not found”

但是:

ls(envir = env)

返回“X”

为什么 eval 不返回 2?

【问题讨论】:

    标签: r variable-assignment evaluation expression-evaluation


    【解决方案1】:

    这应该可行:

    eval(quote(X),envir=env)
    

    问题是它尝试评估 X,然后将其传递给 eval,但 X 在您的主环境中没有任何价值,因此它会给出错误。输入quote 告诉 eval 在env 中寻找X

    【讨论】:

    • 技术上,quote(X) 告诉eval 暂时不要寻找X(即在当前环境中); envir=env 告诉它在 env 中查找,一旦它开始查找...
    • 您也可以使用evalq(X,envir=env) 作为引用的“快捷方式”
    • 如果这有效(并且有效)为什么 eval("X", envir=env) 无效(并且无效)?报价(xx)==“xx”[1] TRUE
    • "X" 是一个字符串,在您评估时将返回该字符串。引用说只取对象 X 而不要评估。然后你在特定环境中用 eval 评估它
    猜你喜欢
    • 2016-03-07
    • 2020-07-23
    • 2019-07-16
    • 1970-01-01
    • 2021-02-26
    • 2021-09-24
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多