library(rlang)
myquo <- quo((Temp - 32) / 1.8)
eval_tidy(myquo, data = as_data_mask(datasets::airquality)) # works
e <- as_env(datasets::airquality, parent = global_env())
eval_tidy(myquo, data = as_data_mask(list(), parent = e)) # error
我原本期望在 e
中找到 Temp
。我做错了什么?
附注:我使用的是 R 版本 3.5.0,并测试了 {rlang} 的最新 CRAN 和 GitHub 版本。
get("Temp", as_data_mask(list(), parent = e))
和get("Temp", as_data_mask(list(Temp=1), parent = e))
都能按预期工作。不过把这个问题发布到rlang的问题页面可能更合适:https://github.com/r-lib/rlang/issues - MrFlicknew.env(parent=globalenv())
,对吧?你期望它返回不同的东西。需要一个新对象来保存父级信息。 - MrFlicke
是父级,而不是环境本身。请参见env_parents(as_data_mask(list(), parent = e))
。 - F. Privé