我希望从包含至少一个负数的矩阵M
中删除这些列。例如,如果
M = (1 0 0 1)
(1 -1 0 2)
(2 3 4 -3)
我想让我成为
M = (1 0)
(1 0)
(2 4)
如何键入 M <- removeNegativeColumns(M)
代码?
发布于 2018-03-04 22:50:58
简单的方法可以是使用sum作为列的条件,其中value < 0 (-ve)
。
# Data
M <- matrix(c(1,0,0,1,1, -1, 0, 2,2, 3, 4, -3), ncol = 4, byrow = T)
M[, !colSums(M < 0 )]
# [,1] [,2]
#[1,] 1 0
#[2,] 1 0
#[3,] 2 4
发布于 2018-03-04 22:49:12
M <- matrix(c(1,0,0,1,1, -1, 0, 2,2, 3, 4, -3), ncol = 4, byrow = T)
M1<- apply(M, 2,function(i)
{
p<- any(i <0)==FALSE #(any(as.vector(i)) < 0)
p
})
M<- M[,M1]
发布于 2018-03-04 22:59:43
removeNegativeColumns <- function(M) M[,apply(M>=0,2,all)]
removeNegativeColumns(M)
# [,1] [,2]
# [1,] 1 0
# [2,] 1 0
# [3,] 2 4
https://stackoverflow.com/questions/49101246
复制相似问题