【发布时间】:2019-06-10 00:39:39
【问题描述】:
我有一个包含多个负值的矩阵。我想删除包含超过 3 或 4 个负值的列,以便剩余的列只有 1 或 2 个负值。
我找不到我的问题的答案。我知道如何删除包含至少 1 个负值的所有列,但不是我想要做出的选择(删除具有 3 个以上负值的列)
数据框是:
M = ( 1 0 0 1 -9 0 7 1)
( 1 -1 0 2 1 0 0 1)
( 1 -1 -5 -3 -7 -3 -5 -3)
( 4 -3 4 -2 3 4 -8 3)
(-2 3 4 -3 -1 -4 -6 -2)
我需要它(如果 3 个或更多负值):
M = ( 1 0 0 1)
( 1 0 0 1)
( 1 -5 -3 -3)
( 4 4 4 3)
(-2 4 -4 -2)
非常感谢
【问题讨论】:
-
有很多方法可以实现,一个例子是
M[,!apply(M, 2, function(x) sum( x < 0 ) >= 3)]