【发布时间】:2016-01-29 00:40:45
【问题描述】:
我是 R 新手,我会发现一些技巧很有帮助。
我已经填充了矩阵 X,其中包含数字行名列表。
这些对应于矩阵 (Y)。
我想根据矩阵 X 中的行名对矩阵 Y 中的所有行求和。
所以 X[,1] 可能包含我想提取矩阵 Y 中这些特定行的行总和的行名列表。
我认为我遇到的困难是将 rownames() 放在语句中的位置 - 我已经尝试了许多使用函数的不同组合,with 和 if。任何指导或提示将不胜感激。谢谢。
我提供了以下问题的简化版本:
X Y
1 2 10 10 10
3 3 20 20 20
5 4 30 30 30
40 40 40
50 50 50
Z[1] (X[,1]) should equal [10+10+10]+[30+30+30]+[50+50+50]
Z[2] (X[,2]) should equal [20+20+20]+[30+30+30]+[40+40+40]
Z 应该是 Y 的行之和的向量,具体取决于 X 的行名称值的列。
【问题讨论】:
-
你想要的输出是什么,一个数字还是一个向量?
sum(Y[X[, 1], ])或rowSums(Y[X[, 1], ])关闭了吗? -
不就是
z <- rowSums(Y); sapply(X, function(x) sum(z[x]))吗?编辑:还没有看到编辑,@rawr,但是是的,我要说的第一个选项。 -
我想要的输出将是基于 X 的每一列中的行名的矩阵 Y 的行之和的向量。对不起,我应该说这是问题的简化版本。我的矩阵要大得多。
标签: r sum conditional