仅保留所有矩阵中存在的行 [英] Retain only rows present in all matrices

查看:69
本文介绍了仅保留所有矩阵中存在的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设其中有一组长度不同的矩阵对象,但是某些行名称是相同的.如何仅保留所有矩阵中存在的那些行?即从此开始:

Suppose one has a list of matrix objects of different lengths, but some row names in common. How could one retain only those rows present in all matrices? I.e., starting with this:

> my.list

$matrix.a
        X1  X2  X3
row.A   59  36  9
row.B   54  29  44
row.C   59  36  9
row.D   54  88  32

$matrix.b
        X1  X2  X3
row.B   47  12  2
row.C   11  36  9
row.D   54  23  99

$matrix.c
        X1  X2  X3
row.A   95  31  77
row.B   63  29  44
row.C   60  43  2

并产生这个:

> my.list.subsetted

$matrix.a
        X1  X2  X3
row.B   54  29  44
row.C   59  36  9

$matrix.b
        X1  X2  X3
row.B   47  12  2
row.C   11  36  9

$matrix.c
        X1  X2  X3
row.B   63  29  44
row.C   60  43  2

我怀疑有人可以使用subset()%in%运算符,但我似乎找不到确切的解决方案.

I suspect that one could use subset() and the %in% operator but I can't seem to find the exact solution.

推荐答案

r <- Reduce(intersect, lapply(my.list, rownames))
my.list.subsetted <- lapply(my.list, function(m) m[r, ])

这篇关于仅保留所有矩阵中存在的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆