R: multiply all columns in a dataframe

dplyr, r, tidyr, tidyverse

Solution

We can use `Reduce`

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

Or use `do`

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

Problem

My dataframe has all numeric columns (such as mtcars). How to create a new column that shows the product of all the columns? My attempt: ``` library(tidyverse) mtcars %>% mutate(product=prod(mpg:carb)) ``` yields incorrect product ``` 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 ... ```

Original source