2016-12-20 11 views
2

私が教えてきたことは、ベクトルは1次元であり、データフレームは2次元であるということです。したがって、ベクトルのインデックス付けは1つの数字、例えばv[1]を必要とし、データフレームのインデックス付けは2つの数字、例えばdf[1, 1]を必要とする。df [i]は何をしていますか?

https://stackoverflow.com/a/13635514/3625022から、df[1]のように、実際にはdfの最初の列が表示されています。例えば、

> x <- data.frame(x = 1, y = 2, z = 3) 
> x[1] 
    x 
1 1 
> x[,1] 
[1] 1 

私はx[1]は、行と列の名前を含み、一方、おそらく、最初の列のエントリのベクターを指すx[,1]ように、これらは、わずかに異なっていることに気付きます。

これに関係なく、これは私が述べているメッセージと矛盾しています。つまり、データフレームにはインデックス用の2つの番号が必要です。このステートメントは間違っていますか?それが正しければ、Rへの新規ユーザーにはどのように説明しますか?x[1]xの最初の列を返します。

+1

data.frameはクラスリストから継承するクラスです。したがって、リストサブセットはdata.framesのために働く。 – Roland

+0

'x [1]'はベクトルではなく 'data.frame'です。 –

+2

Rのすべてが1次元(私が知っている)です。 Data.framesは列のリストです。行列は他のもののように見えるように形作られたベクトルです。 – Frank

答えて

4

データフレームはリストです。特別なタイプのリストですが、リストです。 x[1]がリストの最初の要素です。 x[[1]]は、リストの最初の要素のの内容がであり、リストがデータフレームの場合はx[,1]です。出力を明示的なリストと比較する:

> x <- data.frame(x = 1, y = 2, z = 3) 
> x[1] 
    x 
1 1 
> x[[1]] 
[1] 1 
> x[,1] 
[1] 1 
> y = list(x=1, y=2, z=3) 
> y[1] 
$x 
[1] 1 

> y[[1]] 
[1] 1 
関連する問題