我想从包含至少一个负数的矩阵M
中删除这些列。例如,如果
M = (1 0 0 1)
(1 -1 0 2)
(2 3 4 -3)
我希望M成为
M = (1 0)
(1 0)
(2 4)
如何输入 M <- removeNegativeColumns(M)
代码?
答案 0 :(得分:6)
简单的方法可能是使用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
答案 1 :(得分:2)
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]
答案 2 :(得分:1)
<%= form_for @user, url: authenticate_index_path do |u| %>
答案 3 :(得分:0)
检查每行的最小值是否小于零,然后使用它来过滤矩阵:
filter <- apply(M, 2, function (x) min(x) < 0)
M <- M[,!filter]
编辑: 根据Moody_Mudskipper,这是一种类似但优越(正确)的方法:
filter <- apply(data, 2, function (x) any(x < 0))
data <- data[,!filter]