发布于 2019-10-12 03:23:32
@Roland是正确的。因为不计算x,所以您可以提供给f的任何表达式都不会被逐字转换为字符串。基本R中的准引号由bquote()处理,它有一个.()机制,其工作方式类似于rlang的!!
# Quasiquotation with base R
f1 <- function(x) bquote( .(substitute(x)) + 5 )
# Quasiquotation with rlang
f2 <- function(x) rlang::expr( !!rlang::enexpr(x) + 5 )
e1 <- f1(y) # y + 5
e2 <- f2(y) # y + 5
identical(e1, e2) # TRUE
eval(e1, list(y=10)) # 15https://stackoverflow.com/questions/58344944
复制相似问题