The R language definition を眺めていたら Indexing に
[[ forms are rarely used, ... (e.g. it drops any names or dimnames attribute, and that partial matching is used for character indices).
と部分文字列マッチするとあるので,そうだったかしら,と思ってすぐ試した.
> x <- matrix (1:9, nrow = 3)
> dimnames (x) <- list (ABC = c("R1OW1", "R2OW2", "R3OW3"),
+ DEF = c("C1OL1", "C2OL2", "C3OL3"))
> x["R1", "C2"]
エラー: 添え字が許される範囲外です
> x[["R1", "C2"]]
以下にエラー x[["R1", "C2"]] : 添え字が許される範囲外です
ならねぇじゃん,と思って読み進めたら,
By-Vector
に
Setting exact to TRUE prevents partial matching from occurring, a FALSE value allows it
と.バカやろう.この引数指定を見て,そう言えば,そうだったなと思いだした.
> x[["R1", "C2", exact = FALSE]]
[1] 4
> x[["R1", "C2", exact = NA]]
[1] 4
警告メッセージ:
1: In x[["R1", "C2", exact = NA]] : 'R1' の 'R1OW1' への部分的マッチ
2: In x[["R1", "C2", exact = NA]] : 'C2' の 'C2OL2' への部分的マッチ
> x[["R1", "C2", exact = TRUE]]
以下にエラー x[["R1", "C2", exact = TRUE]] : 添え字が許される範囲外です
マニュアルではデフォルトは NA と読めるんだが,TRUE なんでは?