【问题标题】:How do I remove elements from each row of an array?如何从数组的每一行中删除元素?
【发布时间】:2019-10-27 08:30:05
【问题描述】:

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

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

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

不过没关系,那么我只想将所有这些行放在一个合适的数组中。

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

【问题讨论】:

  • 如果@akrun 的回答解决了你的问题,我们鼓励你点击对勾接受它。

标签: r


【解决方案1】:

我们可以使用applyMARGIN = 1。如果返回的元素个数不一样,会返回vectors的list,而不是matrix

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

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

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

大多数函数都有参数na.rm,它采用布尔值TRUE/FALSE 从分析中删除NA。或在行或整个矩阵上使用na.omit 或使用complete.cases 删除NA

【讨论】:

    猜你喜欢
    • 2021-06-18
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多