R:将数据框中的所有列相乘

标签 r dplyr tidyr tidyverse

我的数据框包含所有数字列(例如 mtcars)。如何创建一个显示所有列的产品的新列?我的尝试:

 library(tidyverse)
 mtcars %>% mutate(product=prod(mpg:carb))

产生不正确的产品

    mpg  cyl  disp  hp  drat    wt   qsec  vs am  gear  carb      product
1  21.0   6 160.0  110  3.90  2.620  16.46  0  1    4    4      8.515157e+18
2  21.0   6 160.0  110  3.90  2.875  17.02  0  1    4    4      8.515157e+18
...

最佳答案

我们可以使用Reduce

mtcars %>%
     mutate(Prod = Reduce(`*`, .))

或者使用do

mtcars %>% 
    rowwise() %>%
    do(data.frame(., Prod = prod(unlist(.))))

关于R:将数据框中的所有列相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40325917/

相关文章:

linux - 在 R 中,使用 Ubuntu,尝试根据 GMP C lib 安装一个 lib,它找不到 GMP,但我安装了 GMP

r - 使用 dplyr 通过分组变量解析多个条件

r - 在自定义 dplyr 包装函数中使用带引号的变量

r - 使用动态列名和动态值的 Dplyr 过滤器

r - 如何使用 tidyr 将向量中字符串中的每个字符分成一列

r - 动态公式不适用于startsWith和colnames

r - 如何在rpart中应用权重?

r - 在 rmarkdown pdf 的标题页添加图像

r - 将 `unnest_wider()` 递归应用于所有列,直到不再有嵌套的列表列?

r - 没有适用于 'separate_' 的方法应用于类 "character"的对象