1

我有一个 M 行 N 列的矩阵/数组。

我想根据该元素是否满足条件(例如 if x > 1 & x != 5)从每一行中删除元素。

请注意,每行删除的数量是不同的,所以我不会再以矩阵结束:在我们完成后,每行将有不同数量的元素。

但这没关系,那么我只想要一个合适的数组中的所有这些行。

如何在 R 中有效地做到这一点?

4

1 回答 1

2

我们可以使用applywith MARGIN = 1。如果返回的元素个数不一样,则返回a listof vectors,而不是matrix

lst1 <- apply(M, 1, function(x) x[x > 1 & x !=5])

另一种选择是保持结构不变,但将所有其他元素更改为NA

M[!(M > 1 & M !=5)] <- NA

大多数函数都有参数na.rm,这些参数需要一个布尔值来从分析TRUE/FALSE中删除。NAna.omit在行或整个矩阵上或 withcomplete.cases删除NA

于 2019-09-27T18:55:01.453 回答