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

R: multiply all columns in a dataframe

我的数据框包含所有数字列(例如 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(.))))