如何选择矩阵中的所有列而不列的某些子集(按名称)?
在这里,我想选择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`] # ???
在真实的脚本中,我的矩阵有很多列,我想选择所有列,但只有一两列。我不想明确指定我想要选择的列,而不是在输出中我不想要的那些。
答案 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