在 dplyr 中将列名作为变量传递
passing column name as variable in dplyr
这个问题的变体已经被问了很多,我也阅读了有关 NSE 的内容。
我还是想不通。
这很简单:
library(dplyr)
data(cars)
cars %>%
group_by(speed) %>%
summarise(d = mean(dist))
现在我想使用变量 x 将 dist 列传递给 mean
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))
这也不行。
我基本上是在胡闹,不知道如何使它工作,也不知道它为什么会失败。
cars %>%
group_by(speed) %>%
summarise_each_(funs(mean), vars(matches(x)))
这个问题的变体已经被问了很多,我也阅读了有关 NSE 的内容。 我还是想不通。
这很简单:
library(dplyr)
data(cars)
cars %>%
group_by(speed) %>%
summarise(d = mean(dist))
现在我想使用变量 x 将 dist 列传递给 mean
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))
这也不行。
我基本上是在胡闹,不知道如何使它工作,也不知道它为什么会失败。
cars %>%
group_by(speed) %>%
summarise_each_(funs(mean), vars(matches(x)))