R:乘以数据帧中的所有列

时间:2016-10-30 03:58:14

标签: 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
...

1 个答案:

答案 0 :(得分:1)

我们可以使用Reduce

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

或使用do

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