2012-04-06 4 views
9

通常、列を取得するとベクトルです。同じ行名と対応する列名を持つdata.frameとしてどのように保つことができますか?各列をdata.frameから(ベクトルの代わりに)data.frameとして取得する方法は?

+0

[1次元マトリックスはRのベクトルに変更する]の可能な重複(http://stackoverflow.com/questions/9949202/1-dimensional-matrix-is-changed-to-a-vector -in-r) – joran

+0

@joran申し訳ありませんが、重複している可能性があります。私は私の応答を残しておきます。もしこの質問が閉じられていれば、私の答えの削除は議論の対象です。 –

+0

@TylerRinkerそれを心配しないでください。これは本当によくある質問です。それだけです。 – joran

答えて

13

data.frame[,i] #As a vector 
data.frame[i] #As a data.frame 
+0

ニース、私はあなたがそれを行うことができるか分からなかった+1 –

+0

私の質問の投稿にいくつかの価値を追加し、閉鎖されていないと思う:) – RNA

5

は、のように、引数の低下= FALSEを使用します。

mtcars[, 1, drop = FALSE] 
0

data.frameをサブセット化するときに、単一の番号を指定した場合、あなたは1列のdata.frameを取得します。これは行列のサブセット化とは異なり、列全体を返すためには "欠落した" i引数が必要です(ベクトルに変換されます)。代わりdata.frameとしてクラスを維持し、また、行名を保持するためにコンマすなわちdata.frame [i]を使用data.frame [i]を用いて所望の列を呼び出す

# mtcars is a data.frame 
mtcars[1]  # first column 
str(mtcars[1]) # is still a data.frame 
# 'data.frame': 32 obs. of 1 variable: 
# $ mpg: num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... 
# MTCARS is a matrix 
MTCARS <- as.matrix(mtcars) 
as.matrix(MTCARS)[1]  # only the first element 
# [1] 21 
str(as.matrix(MTCARS)[,1]) # the first column, as a vector 
Named num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... 
- attr(*, "names")= chr [1:32] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" ... 
関連する問題