【发布时间】:2011-04-12 13:22:50
【问题描述】:
我有一个关于如何将 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() 总是返回标量。
我可以使用循环来执行必要的操作,但这与面向向量的编程范式相矛盾。
感谢您的帮助!
编辑:根据 Andrie 的建议,这是原始问题的解决方案:
ppl[paste(i),land,,,,1] <- ppl[paste(i),land,,,,1] - apply(ppl[paste(i),land,,,,2:8],c(1,2,3),sum)
【问题讨论】:
-
你需要使用
apply和sum来获得你想要的东西。但是,由于您没有提供示例数据,我无法给您确切的代码。