【发布时间】:2016-01-22 16:41:48
【问题描述】:
我有一个 6940 行和 100 列的矩阵数据框。我需要在数据集上一次找到 5 天的累积时间。现在我能够为此构建一个 for 循环代码,如下所示:
cum<- matrix(data=q1,nrow=6940,ncol=100)
for (j in 1:100){
for (i in 1:6940){
cum[i,j]<-sum(q1[i,j],q1[i+1,j],q1[i+2,j],q1[i+3,j],q1[i+4,j],na.rm=T)
}
}
我想知道apply家族中是否有任何函数可以做同样的事情,因为这段代码非常耗时。
例如,如果我使用命令生成数据框
ens <- matrix(rnorm(200),20)
我想要一次 5 行的累积总和。即 row1:row5、row2:row6、row3:row7 等以数据框形式的总和。
我尝试以这种形式使用 apply 函数:
apply(apply(apply(apply( apply(m, 2, cumsum),2, cumsum), 2, cumsum),2,cumsum),2,cumsum)
但问题是我没有得到 5 个块的累积值,只有一个整体的累积值。
【问题讨论】:
标签: r for-loop statistics apply lapply