【发布时间】:2018-07-11 04:36:32
【问题描述】:
我听说 dplyr 不推荐标准评估,我们可以用 enquo() 和 quo() 做类似的事情。
我的原始代码(简化)是
my_function <- function(data, x="OriginalX", y="OriginalY"){
data %>%
mutate_(CopyX = x, CopyY = y)
}
它有效。
我尝试了以下代码
my_function <- function(data, x="OriginalX", y="OriginalY"){
qx <- enquo(x)
qy <- enquo(y)
data %>%
mutate(CopyX = (!!qx), CopyY = (!!qy))
}
为什么它不起作用?我们应该继续使用标准评估吗?
【问题讨论】:
-
enquo()适用于传递符号/名称而不是字符串的情况。 (tidyverse 不喜欢输入引号。)您可以使用qg <- rlang::sym(x)而不是enquo(x)将字符串转换为符号。而你要不要使用标准评估真的是见仁见智。不鼓励在 Stack Overflow 上提出受制于意见的问题。