这个问题的变体被问了很多,我也读过关于 NSE 的文章。我仍然无法弄清楚这一点。
这很简单:
library(dplyr)
data(cars)
cars %>%
group_by(speed) %>%
summarise(d = mean(dist))
现在我想使用变量 x 来传递 dist 列来表示
x <- "dist"
当然这不起作用:
cars %>%
group_by(speed) %>%
summarise(d = mean(x))
所以我使用 SE 版本的摘要:
cars %>%
group_by(speed) %>%
summarise_(d = mean(x))
好的,不起作用,所以我还必须添加~
:
cars %>%
group_by(speed) %>%
summarise_(d = ~mean(x))
仍然不起作用,但如果使用dist
代替x
:
cars %>%
group_by(speed) %>%
summarise_(d = ~mean(dist))
这有效,但不使用 x。
cars %>%
group_by(speed) %>%
summarise_(d = ~mean(~x))
这也行不通。
我基本上是在胡闹,不知道如何使它工作,或者它为什么会失败。