2016-10-30 72 views
2

我的數據幀包含所有數字列(如mtcars)。如何創建一個顯示所有列的產品的新列?我嘗試:R:乘以數據幀中的所有列

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 
... 
+2

我可能會做'mtcars%>%mutate(prod = apply(。,1,prod))',老實說 – alistaire

+0

沒有akrun的解決方案那麼快,但是可以運行 – Irakli

+0

老實說,這對於一個奇怪的操作data.frame。有一個很好的機會,你應該重塑長格式或只是使用矩陣。 – alistaire

回答

1

我們可以使用Reduce

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

或者使用do

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

這不適用於列名,但 –

+0

@OttToomet OP的問題是'R:乘以數據框中的所有列' – akrun