说,我有一个数组Cumsum沿着阵列中的一个维度
a <- array(dim=c(2,5), dimnames=list(c(1,2),c(1:5)))
a[] <- 10
1 2 3 4 5
1 10 10 10 10 10
2 10 10 10 10 10
,并希望像沿着一个维度cumsum()创造的东西,可以得到:
1 2 3 4 5
1 10 20 30 40 50
2 10 20 30 40 50
还是一个下降余额(累计剩余):
1 2 3 4 5
1 50 40 30 20 10
2 50 40 30 20 10
在R(矢量化)中这样做的正确方法是什么?
不是很好,但说明:
for (i in 1:2) {
for (j in 1:5) {
b[i,j] <- sum(a[i,1:j])
}
}
1 2 3 4 5
1 10 20 30 40 50
2 10 20 30 40 50
余额递减样本(说明为什么 “cumsum()” 是没有预料到的答案):
for (i in 1:2) {
for (j in 1:5) {
b[i,j] <- sum(a[i,j:5])
}
}
感谢
cumsum()将不会为余额递减工作(参见示例2) – szeta
遗憾,没有看到。你能不能倒转索引,例如吨(应用(A [5:1],1,密友))[5:1]。有点混乱,但可能工作? – drw
或者't(apply(a,1,function(x)rev(cumsum(x))))' – user20650