仅保留所有矩阵中存在的行

Rog*_*ger 3 r list matrix subset

假设有一个不同长度的矩阵对象列表,但有一些共同的行名称.如何只保留所有矩阵中存在的那些行?即,从这开始:

> 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
Run Code Online (Sandbox Code Playgroud)

并产生这个:

> 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
Run Code Online (Sandbox Code Playgroud)

我怀疑可以使用subset()%in%操作员,但我似乎无法找到确切的解决方案.

Hon*_*Ooi 6

r <- Reduce(intersect, lapply(my.list, rownames))
my.list.subsetted <- lapply(my.list, function(m) m[r, ])
Run Code Online (Sandbox Code Playgroud)