1

我意识到整洁的评估不使用词汇范围,但我希望准引用在rlang我决定的环境中寻找符号。

当前行为:

envir <- new.env(parent = globalenv())
eval(parse(text = "little_b <- 'b'"), envir = envir)
eval(rlang::expr(!!little_b), envir = envir)

## Error in (function (x)  : object 'little_b' not found

相反,我希望最后一行返回"b"。如果你发现一个版本eval()在这里可以工作并且像evaluate::try_capture_stack().

仅供参考:我正在尝试解决这个问题

4

1 回答 1

2

我们可以使用with在环境中传递表达式

with(envir, expr(!!little_b))
#[1] "b"

或者另一种选择是local

local(rlang::expr(!!little_b), envir = envir)
#[1] "b"

或通过quoteeval如@lionel 所述)

eval(quote(expr = rlang::expr(!! little_b)), envir = envir)
#[1] "b"
于 2018-01-30T08:39:52.650 回答