0

列のサブセットなしで (名前で)マトリックス内のすべての列を選択するにはどうすればよいですか?

ここでは、すべてを選択したいのですが、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 つまたは 2 つを除いてすべてを選択したいと考えています。選択したい列を明示的に指定したくはありません。むしろ、出力したくない列によって指定します。

4

1 に答える 1

4

%in%演算子を使用する

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

cベクトルに好きなだけ名前を追加します。この例では、返される列が 1 つしかないため、ベクトルとして表示されます。

より良い例

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
于 2013-08-06T13:54:56.820 に答える