【发布时间】:2017-07-19 15:21:30
【问题描述】:
我有一个这样的矩阵(A)(行和列的名称是识别码(ID):
1 3 10 38 46
1 0 0.4 0 0 0
3 0 0 0 0 0
10 0 0 0.9 0.8 0
38 0 0 0 0 0
46 0 0.1 0 0 0
还有一个像这样的矩阵(B):
a b c
1 2.676651e-04 4.404911e-06 9.604227e-06
3 6.073389e-10 3.273222e-05 3.360321e-04
10 4.156392e-08 1.269607e-06 7.509217e-06
38 4.200699e-08 3.227431e-02 8.286920e-11
46 9.352353e-05 3.318948e-20 8.694981e-06
我想取A矩阵元素的索引>0,所以我用了这个命令:
temp <- apply(A,1, FUN=function(x) which(x>0))
它返回了一个列表,其中元素的正确索引>0。
之后,我想使用索引乘以矩阵 B 的元素。特别是,我想为每一行做这样的事情:
1: 6.073389e-10*3.273222e-05*3.360321e-04
我已使用矩阵 A 的信息(在第一行的第二列中我的值 >0)作为索引,将矩阵 B 中的元素作为第一行。
对于第二行,我得到 0 因为 A[2,]>0 中没有元素
对于第三行,我想获得类似于第一行的东西,但我应该将两个产品相加
10: 4.156392e-08*1.269607e-06*7.509217e-06 +4.200699e-08*3.227431e-02*8.286920e-11
我试图取消列出该列表,但通过这种方式我获得了一个向量丢失了 ID 之间的对应关系
【问题讨论】:
-
也许你想要
which(A>0, arr.ind=TRUE)?