多维数组中的部分行和



我有一个关于如何将R函数应用于多维数组的问题。

例如,考虑以下操作,我通过其他项的和减少一个项。

ppl["2012",,,,,1] <- ppl["2012",,,,,1]
- ppl["2012",,,,,2] - ppl["2012",,,,,3] - ppl["2012",,,,,4]
- ppl["2012",,,,,5] - ppl["2012",,,,,6] - ppl["2012",,,,,7]
- ppl["2012",,,,,8]

虽然在这种情况下减去单个值可能是可行的,但我更喜欢面向向量的方法。

如果我熟悉多维矩阵代数,我可能会在应用时提出执行必要操作的矩阵,但考虑到所涉及的维数,这太复杂了。

sum(ppl["2012",,,,,2:8])不是正确的解,因为sum()总是返回标量。

我可以使用循环来执行必要的操作,但这与面向向量编程的范例相矛盾。

谢谢你的帮助!

编辑:这里是解决原来的问题,基于安德烈的建议:ppl[paste(i),land,,,,1] <- ppl[paste(i),land,,,,1] - apply(ppl[paste(i),land,,,,2:8],c(1,2,3),sum)

EDITED

下面是使用applysum返回跨多维表计算的总和的示例:

mat <- array(1:27, dim=c(3, 3, 3))

假设你想计算前两个维度的每个组合的第三个维度的和。

那么执行此操作的代码变为:

apply(mat, c(1,2), sum)
     [,1] [,2] [,3]
[1,]   30   39   48
[2,]   33   42   51
[3,]   36   45   54

相关内容

  • 没有找到相关文章

最新更新