[英]get sum of the product of two columns
有人可以解釋我下面的R功能的操作順序是錯誤的嗎? 我希望在每一行上相乘然后求和,但是得到的答案卻大不相同。
qqq<-data.frame(c(1,2,3),c(4,5,6))
library(dplyr)
qqq%>%sum(.[,1]*.[,2]) #returns: 53
# answer I expected: 1*4+2*5+3*6 = 32
我們可以使用Reduce
來獲得按行乘積,然后sum
qqq %>%
Reduce(`*`, .) %>%
sum
#[1] 32
或正如評論中提到的@eipi一樣,使用{}
也可以
qqq %>%
{.[,1]*.[,2]} %>%
sum
或與do
(來自@thelatemail)
qqq %>%
do(.[1]*.[2]) %>%
sum
我認為有一個簡短的示例說明了這里發生的事情,即使我不知道為什么它會在基礎代碼方面發生:
整個數據集將傳遞給sum
操作,然后與sum
操作中的表達式一起sum
:
在最簡單的示例中等於sum(data.frame(1:3))
:
data.frame(1:3) %>% sum()
#[1] 6
然后6 + 6:
data.frame(1:3) %>% sum(.[1])
#[1] 12
現在,在輸入數據集的總和之下為12,因此結果為12 + 6:
data.frame(1:3,1:3) %>% sum(.[1])
#[1] 18
將兩列相加后得出12 + 6 + 6:
data.frame(1:3,1:3) %>% sum(.[1],.[2])
#[1] 24
加一個乘法得到12 + sum(1:3 * 1:3)= 12 + 14
data.frame(1:3,1:3) %>% sum(.[1]*.[2])
#[1] 26
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.