行列を1つの列にサブセット化し、行列のデータ型を維持し、行/列の名前を維持するにはどうすればよいですか?


84

行列を単一の列にサブセット化すると、結果は行列ではなく数値クラスになります(つまり、5番目の列にサブセット化するmyMatrix [、5])。次のような複雑なことをせずに、単一の列にサブセット化し、行列形式を維持し、行/列名を維持するコンパクトな方法はありますか?

matrix( myMatrix[ , 5 ] , dimnames = list( rownames( myMatrix ) , colnames( myMatrix )[ 5 ] )

回答:


122

drop=FALSE引数を使用します[

m <- matrix(1:10,5,2)
rownames(m) <- 1:5
colnames(m) <- 1:2
m[,1]             # vector
m[,1,drop=FALSE]  # matrix

私は、私は最近、これを見た宣誓しているだろうが、それは疑問視されていた類似したデータフレームの動作していることがあります。stackoverflow.com/questions/6941985/...
IRTFM

5
最初の次元のみでインデックスを作成する場合は、次のようにドロップを使用できますか?m[1,,drop=FALSE]
Kevin Bullaughey 2014年

クックのD距離を使用し、カットオフ値(0.1など)に基づいて値を選択する統計的根拠の例を示すと、相対データセットのそれぞれの行数でクックD値が得られます cooksd<-as.data.frame(cooks.distance(ft1)) cooksD_outliers<-cooksd[cooksd>0.1,drop=FALSE,]
Elias EstatisticsEU 2017年

result <-apply(temp、1、function(x)tapply(x、genesymbol、function(x)mean(x、na.rm = T)))結果が配列であるという問題に対処する方法ですが、実際には、 1列のデータフレームにしたいですか?ありがとう
ShichengGuo19年

@ShichengGuo:新しい質問をする必要があります。
ジョシュア・ウルリッヒ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.