从矩阵列表中删除矩阵

我有一个由 12 个矩阵组成的列表,M我试图从列表中删除每个矩阵,其中包含 0 行。

我知道我可以手动删除这些矩阵 (例如,删除第二个矩阵) M[2] <- NULL。我想使用逻辑来删除它们,例如:(M <- M[nrow(M)>0,]但这显然不起作用)。

回答

可以工作的另一个选择是Filterbase R

Filter(nrow, M)

之所以有效,是因为 0 被视为 FALSE,所有其他值都被视为 TRUE

如果也有一些属性,gvcollapse可以维护它

library(collapse)
gv(M, function(x) nrow(x) > 0)

  • super elegant `Filter` approach! +1!

回答

使用sapply()得到非零矩阵的逻辑向量,然后使用该向量来选择/子集:

nzm <- sapply(M, function(m) nrow(m)>0)
M <- M[nzm]


以上是从矩阵列表中删除矩阵的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>