我刚刚问过a question about generating multiple columns at once with dplyr
,但我是一个笨蛋,过分简化了问题,并提出了另一个问题。我想找到一种dplyr
方法,用于根据其他列动态生成列。
cols <- c("x", "y")
foo <- c("a", "b")
bar <- c("c", "d")
df <- data.frame(a = 1, b = 2, c = 10, d = 20)
df[cols] <- df[foo] * df[bar]
在该问题的第一次迭代中,我仅包含一组先前定义的列,因此可以使用以下内容:
df %>%
mutate_at(vars(foo), list(new = ~ . * 5)) %>%
rename_at(vars(matches('new')), ~ c('x', 'y'))
但是,正如前几行代码所建议的那样,我想将两个现有的列相乘在一起,并且无法弄清楚该如何做。我尝试过:
df %>%
mutate_at(c(vars(foo), vars(bar)),
function(x,y) {x * y})
返回错误:
Error in (function (x, y) : argument "y" is missing, with no default
是否可以引用要与mutate_at
相互使用的多组列?
答案 0 :(得分:3)
好吧,您想使用两列,我认为Podocarpaceae Afrocarpus
Podocarpaceae Dacrycarpus
Podocarpaceae Dacrydium
Podocarpaceae Podocarpus
是可以使用的函数:
purrr::map2