7

1 列のデータ フレーム dfrm を作成し、行名を次のように設定します。

v1 = c(1,2,3)
dfrm <- data.frame(v1)
row.names(dfrm) <- c("AD","BP","CD")

dfrm
   v1
AD  1
BP  2
CD  3

行名とインデックスで要素にアクセスできます。

dfrm$v1[1]
[1] 1

行名とコンポーネント名を引用符で囲んで要素にアクセスできます。

dfrm["AD","v1"]
[1] 1

しかし、行名とコンポーネント名で要素にアクセスできないのはなぜですか?

dfrm$v1["AD"]
[1] NA
4

1 に答える 1

5

答えは、ベクトルには名前を付けることができますが、行名がないということです。

リスト項目として列にアクセスする場合、R は行名をベクトルの名前に渡すという追加の手順を実行しません。

> dfrm$v1
[1] 1 2 3
> dfrm[["v1"]]
[1] 1 2 3
> dfrm[,"v1"]
[1] 1 2 3
> dfrm[,1]
[1] 1 2 3
> names(dfrm$v1)
NULL

これが役立つケースは限られており、data.frame で列が引き出されるたびに名前をコピーするオーバーヘッドはおそらく価値がないため、これはおそらく良いことであることに注意してください。

自分でコピーしたい場合:

> vone <- dfrm$v1
> names(vone) <- rownames(dfrm)
> vone
AD BP CD 
 1  2  3 
于 2012-11-13T12:00:41.773 に答える