【发布时间】:2013-04-06 19:49:29
【问题描述】:
我有两个矩阵,一个是 10x1 双矩阵,可以扩展到任何用户预设的数字,例如。 100.
查看(min_matrx)
V1
1 27
2 46
3 30
4 59
5 46
6 45
7 34
8 31
9 52
10 46
另一个矩阵是这样的,还有更多行没有显示:
视图(main_matrx)
row.names sum_value
s17 45
s7469 213
s20984 24
s17309 214
s7432369 43
s221320984 12
s17556 34
s741269 11
s20132984 35
对于 main_matrx 中的每一行名称,我想计算一个值大于 main_matrx 中 sum_value 的值出现在 min_matrx 中的次数。然后我想将它除以 min_matrx 中的行数,并将该值作为新列添加到 main_matrx 中。
例如s17的main_matrx的第1行,min_matrx中出现超过45的值的次数=5次。
现在将 min_matrx=> 5/10 =0.5 的 5 除以 10 行将是我希望作为 s17 的 main_matrx 中的新列的值。然后对行名称中的所有 s_id 使用相同的公式。
到目前为止,我一直在摆弄:
for(s in 1:length(main_matrx)) {
new<-sum(main_matrx[s,]>min_CPRS_set)/length(min_matrx)
}
我尝试使用 apply(),但仍然没有得到结果。
apply(main_matrx,1:length(main_matrx), function(x) sum(main_matrx>min_CPRS_set)/length(min_matrx)))
现在,我被卡住了,因为它不起作用。我还是 R 新手,所以我的代码不是特别有效。有什么建议吗?
【问题讨论】:
-
这很难理解。您对
s17、s7469和20984有何期待? -
我编辑了问题以使其更清晰。对于 s17,我预计为 0.5。对于每个 s_id,公式应为 =(min_matrx 中的#times 值小于 main_matrx 中的 sum_value)/min_matrx 中的行数。
-
apply 是对矩阵的所有列或行进行操作。第二个参数是 1 或 2。