如果你能原谅我对循环的兴趣,我想知道如何遍历变量名的向量(在我的用例中必须是字符串)并改变原始列。在这个玩具示例中,我想计算列i
加z
的平均值。
df_have <- data.frame(x=c(1, 1, 2, 3, 3),
y=c(2, 2, 3, 4, 4),
z=c(0, 1, 2, 3, 4))
for (i in c("x", "y")) {
df_test <-
df_have %>%
mutate(!!i := mean(i)+z)
}
df_want <- data.frame(x=c(2, 3, 4, 5, 6), # mean 2 + z
y=c(3, 4, 5, 6, 7), # mean 3 + z
z=c(0, 1, 2, 3, 4))
答案 0 :(得分:2)
好吧,如果你想做一个循环,那么
df_test <- df_have
for (i in c("x", "y")) {
df_test <-
df_test %>%
mutate(!!i := mean((!!as.name(i)))+z)
}
请注意,您需要将这些字符串转换为符号才能在mutate的表达式中使用。在这种情况下,一个eaiser技巧将是
df_have %>% mutate_at(c("x","y"), funs(mean(.)+z))