【发布时间】:2014-02-11 15:08:57
【问题描述】:
例如,如果我有一个数字向量。
c(1:9)
现在,如果我想通过以下方式计算三个连续数字的总和:
(1+2+3,4+5+6,7+8+9)
我应该如何处理?
【问题讨论】:
-
最好使用
colSums(matrix(1:9,nrow=3))而不是rowSums(matrix(1:9,nrow=3, byrow=TRUE))。 -
我喜欢游戏 :)
sapply(0:2, function(x) sum(c(1:9)[(3*x+1):(3*x+3)]))给:6 15 24 -
这些都没有条件语句。 @BenBolker 你需要
colSums -
这里还有更多:
tapply(1:9, (seq_along(1:9)-1) %/% 3 , sum)和library(zoo); rollapply(1:9, 3, sum, by = 3) -
有人可以把这个放到codegolf.stackexchange.com ...