删除矩阵中具有负值的列

时间:2016-03-14 12:52:59

标签: r matrix

假设我有以下矩阵;

structure(c(1, -2, 1, 2, -2, 1, 3, 2, 1,4,5,6), .Dim = c(3L, 4L), .Dimnames = list(NULL, c("a", "b", "c","d")))

我想删除所有具有负值的列,并返回一个仅包含&#34; c&#34;的矩阵。和&#34; d&#34;列。我尝试subset(a, a<0),但它出现以下错误:

Error in x[subset & !is.na(subset), vars, drop = drop] : 
  (subscript) logical subscript too long

1 个答案:

答案 0 :(得分:4)

我们可以在逻辑矩阵上使用colSums,否定它并使用它来对列进行子集

m1[,!colSums(m1 <0)]
#     c d
#[1,] 3 4
#[2,] 2 5
#[3,] 1 6