对从daraframe中选择的所有列执行逐行乘法的方法是什么?下面的多个列是通过说明要相乘的变量显式创建的。
如果我选择了不同的列呢?哪些代码需要进行变异,才能使之前选择的所有列相乘?注意:选定的列数并不总是三列。
示例:
library(tidyverse)
mtcars %>%
select(hp, qsec, disp) %>%
mutate(mult = hp * qsec * disp)
发布于 2020-10-21 13:49:23
一种可能的方法是使用matrixStats
包中的rowProds
mtcars %>%
select(hp, qsec, disp) %>%
mutate(mult=rowProds(as.matrix(.)))
但我相信有一种更优雅的方式,不需要使用其他包。
发布于 2021-05-22 05:49:14
您可以使用Reduce
-
library(dplyr)
mtcars %>%
select(hp, qsec, disp) %>%
mutate(mult = Reduce(`*`, .))
或者使用prod
的rowwise
-
mtcars %>%
select(hp, qsec, disp) %>%
rowwise() %>%
mutate(mult = prod(c_across()))
https://stackoverflow.com/questions/64464031
复制