我有两个矩阵,一个是10x1双矩阵,可以扩展为任何用户预设编号,例如。 100.R:根据另一个矩阵中的值计算矩阵中的百分比值
视图(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 = 5次时值出现的次数大于45。
现在将5乘10行min_matrx => 5/10 = 0.5将是我想要作为s17的main_matrx中新列的值。然后对行名称中的所有s_id使用相同的公式。
到目前为止,我还拨弄着:
for(s in 1:length(main_matrx)) {
new<-sum(main_matrx[s,]>min_CPRS_set)/length(min_matrx)
}
,我尝试使用适用(),但我仍然没有得到结果。
apply(main_matrx,1:length(main_matrx), function(x) sum(main_matrx>min_CPRS_set)/length(min_matrx)))
现在,我只是卡住了,因为它不工作。我还是R新手,所以我的代码效率不高。有什么建议么?
这很难遵循。你对'17','s7469'和'20984'有什么期望? – 2013-04-06 19:57:30
我编辑了这个问题,使其更清晰。对于第17节,我预计0.5。对于每个s_id,公式应为=(min_matrx中的#次值小于main_matrx中的sum_value)/ min_matrx中的行数。 – CadisEtRama 2013-04-06 20:16:34
适用于对矩阵的所有列或行进行操作。第二个参数是1或2。 – 2013-04-06 21:01:03