ブラケットとダブルブラケットとダラー
ブラケット演算子`[`は第二引数に数値ベクトル/名前文字列ベクトルを取るスライス演算を意味する。ほんとに成分(構成要素)を取り出すのはダブルブラケット演算`[[`。ダラー$はダブルブラケット演算のシンタックスシュガーと思えばいいだろう。
- iris[["Sepal.Length"]] ≡ iris$Sepal.Length ≡ iris[[1]]
ダブルブラケット演算に第二引数に数値ベクトルを入れると、順次ダブルブラケットに展開される。
- iris[[c(2, 3)]] ≡ iris[[2]][[3]]
だが、数値ベクトルと連続したダブルブラケットは完全に同じではない。
> iris[[c(2, 3, 1)]]
以下にエラー .subset2(x, i, exact = exact) :
再帰的な添字操作がレベル 2 で失敗しました
> iris[[2]][[3]][[1]]
[1] 3.2
>
ベクトルに対するダブルブラケットはシングルブラケットと同じ。
> 1[1]
[1] 1
> 1[[1]]
[1] 1
> 1[[2]]
以下にエラー 1[[2]] : 添え字が許される範囲外です
> 1[2]
[1] NA
> 1[0]
numeric(0)
> 1[-1]
numeric(0)
> 1[-2]
[1] 1
>