【发布时间】:2021-02-02 05:04:36
【问题描述】:
示例数据:
(tmp_df <-
expand.grid(id = letters[1:3], y = 1:3))
# id y
# 1 a 1
# 2 b 1
# 3 c 1
# 4 a 2
# 5 b 2
# 6 c 2
# 7 a 3
# 8 b 3
# 9 c 3
以下作品:
tmp_df %>%
group_by(id) %>%
mutate_at(which(colnames(.) %in% c("y")),
sum)
# id y
# <fct> <int>
# 1 a 6
# 2 b 6
# 3 c 6
# 4 a 6
# 5 b 6
# 6 c 6
# 7 a 6
# 8 b 6
# 9 c 6
但以下会引发错误Error: Only strings can be converted to symbols:
tmp_df %>%
group_by(id) %>%
summarise_at(which(colnames(.) %in% c("y")),
sum)
请注意,以下代码 sn-ps 是成功生成预期结果的替代方法:
tmp_df %>%
group_by(id) %>%
summarise_at(vars(y),
sum)
tmp_df %>%
group_by(id) %>%
summarise_at("y",
sum)
编辑:按照 akrun 的回答,我应该注意我使用的 dplyr 版本是 dplyr_0.8.4
【问题讨论】:
-
这是一个错误吗?
.vars参数的帮助文件明确表示:..., a numeric vector of column positions, ...(我认为这是引发错误的原因) -
声称重复的已接受答案声称此问题已得到修复,但如果是这样,则该问题会在以后的某个版本中重新引入,因此它仍然是一个问题。