category: R
DATE : 2007/06/18 (Mon)
DATE : 2007/06/18 (Mon)
リストやデータフレームからベクトルを取り出すには、[[ ]] か $ でインデックスを指定します。
例えば、R 内蔵のデータセット iris から花びらの長さ(Petal.Length)をベクトルとして取り出すには、次のようにします。(「>」はプロンプトです)
> iris[[ "Petal.Length" ]] > iris$Petal.Length
[ ] でインデックスを指定してもリストから要素を取り出すことはできます。ただし、この場合はベクトルとしてではなく、リストとして取り出されます。リストの一部をそのまま取り出すという具合です。
なお、 [[ ]] と $ とでは細かいところで動作が異なります。[[ ]] の場合は、 [[ ]] 内が式として評価されますが、 $ では評価されません。
リストからベクトルを取り出すか、リストを取り出すかという違いは、関数を使用する際に重要となってきます。関数の中には、ベクトルしか受け付けないものもあります。そのような関数にリストを渡してしまった場合、次のようなエラーが出ます。
> pairwise.t.test( iris[ "Petal.Length" ], iris[ "Species" ] ) 以下にエラーsort.list(unique.default(x), na.last = TRUE) : 'x' は 'sort.list' に対してはアトミックでなければなりません。 'sort' をリストに対して呼び出しましたか?
この例の関数の場合、次のようにベクトルとして値を渡すときちんと動作します。
> pairwise.t.test( iris[[ "Petal.Length" ]], iris[[ "Species" ]] )
参考文献
忍者ブログ [PR]