如何计算R中的连续和?

时间:2014-02-11 15:08:57

标签: r sum

例如,如果我有一个数字向量。

c(1:9)

现在,如果我想以下列方式计算三个连续数字的总和:

(1+2+3,4+5+6,7+8+9)

我该怎么办?

1 个答案:

答案 0 :(得分:1)

我学会了正确使用这个:

foo<-1:9
aggregate(foo,by=list(rep(1:3,each=3) ),FUN=sum)

要获得更长的输入,请执行以下操作:

function (x,len) aggregate(x,by=list(rep(1:(length(x)/len),each=len) ),FUN=sum)

因为我还在等what-if.xkcd.com更新,所以这里是时间: (我确实检查了所有计算正确的事情)

x<-1:99
len<-3
 microbenchmark(shadow(x,len),rawr(x,len),groth(x,len),carl(x,len),times=10)
Unit: microseconds
           expr      min       lq    median       uq      max
 shadow(x, len)   62.006   70.130   75.0480   97.926  180.884
   rawr(x, len)  541.797  564.033  571.9445  585.842  639.295
  groth(x, len)  514.002  525.548  547.5705  551.633  568.310
   carl(x, len) 1045.536 1099.844 1120.5840 1166.553 1346.582
 neval
    10
    10
    10
    10

所以matrix -- colSums最快。我会把它留给其他人来弄清楚每种方法的内存要求。