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

> 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%运算符,但我似乎找不到确切的解决方案。

最佳答案

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

09-10 01:52
查看更多