ifの条件式に関して
> a <- 1 ; if ((0 < a) < 2) print(a)
[1] 1
> a <- 1 ; if ((0 > a) < 2) print(a)
[1] 1
> a <- 1 ; if ((0 < a) > 2) print(a)
> a <- 1 ; if ((0 > a) > 2) print(a)
上2つの式はa2で評価されるようで表示されません。
そもそも他の言語のように
> a <- 1 ; if (0 < a < 2) print(a)
エラー: 予想外の '<' です ( " if (0 < a <" の)
のように書いてエラーとなり、()をつけて&として解釈されないかなーと
上の式をなんとなく書いてみたんですが、
Rでどう評価されてるのかよくわかりませんでした。(素直に0<a & a<2って書けよですね)
よくわからないときは,部分部分を評価してみる。
a <- 1 のとき,(0 < a) は TRUE,(0 > a) は FALSE
R では TRUE/FALSE は数値としては 1/0 として認識される
よって,(0 < a) < 2 は TRUE < 2 そして 1 < 2 なのだから TRUE になる
同様に,(0 > a) < 2 は FALSE < 2 そして 0 < 2 なのだから,この場合も TRUE になる
(0 < a) > 2 は TRUE > 2 そして 1 > 2 なのだから FALSE
(0 > a) > 2 は FALSE > 2 そして 0 > 2 なのだから FALSE
そもそも「他の言語のように (0 < a < 2) のように書いてエラーとなり、()をつけて&として解釈されないかなーと」いうけど,そんなことを許す言語ってあるか?ないと思うぞ。