2011-09-08 5 views
56

行列を1つの列にサブセット化すると、結果は行列ではなくクラス数値になります(つまり、5番目の列にサブセットするためのmyMatrix [、5])。 、単一の列にサブセット行列形式を維持し、同様に複雑な何かをせずに、行/列名を維持するためのコンパクトな方法があります:行列を1つの列にサブセット化する方法、行列のデータ型を維持する方法、行/列の名前を維持する方法

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

答えて

78

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

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

私はちょうど最近、これを見た宣誓しているだろうが、それは疑問視されていた類似したデータフレームの動作していることがあります。http://stackoverflow.com/questions/6941985/r-how-to-subset-a -data-frame-in-a-list-and-return-data-frame –

+0

これは素晴らしいことです! – SFun28

+1

最初の次元のみでインデックスを作成する場合は、次のようにdropを使用できますか? 'm [1、、drop = FALSE]' –

関連する問題