このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

ブラケットとダブルブラケットとダラー

ブラケット演算子`[`は第二引数に数値ベクトル/名前文字列ベクトルを取るスライス演算を意味する。ほんとに成分(構成要素)を取り出すのはダブルブラケット演算`[[`。ダラー$はダブルブラケット演算のシンタックスシュガーと思えばいいだろう。

  • 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
>