R:在没有col的矩阵中选择列。 `X`

时间:2013-08-06 13:53:17

标签: r

如何选择矩阵中的所有列而不列的某些子集(按名称)?

在这里,我想选择foo

以外的所有内容
m = as.matrix(1:4)
dim(m) <- c(2,2)
colnames(m) = c('foo', 'bar')

     foo bar
[1,]   1   3
[2,]   2   4

m[, all-but-`foo`] # ???

在真实的脚本中,我的矩阵有很多列,我想选择所有列,但只有一两列。我不想明确指定我想要选择的列,而不是在输出中我不想要的那些。

1 个答案:

答案 0 :(得分:4)

使用%in%运算符

m[ , ! colnames(m) %in% c('foo') ]
[1] 3 4

c向量中添加任意数量的名称。在此示例中,它显示为向量,因为您只返回了一列。

更好的例子

m <- matrix( 1 , nrow = 3 , ncol = 6 )
colnames( m ) <- letters[1:6]
m[ , ! colnames(m) %in% c('a','b') ]
     c d e f
[1,] 1 1 1 1
[2,] 1 1 1 1
[3,] 1 1 1 1