裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

基本を勉強しよう

2012年01月31日 | ブログラミング

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) のように書いてエラーとなり、()をつけて&として解釈されないかなーと」いうけど,そんなことを許す言語ってあるか?ないと思うぞ。

コメント (1)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ダメ出し:計算の無駄,プロ... | トップ | ダメ出し:オンラインヘルプ... »
最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
Unknown (通りすがり)
2012-02-22 22:29:52
pythonでは許されるのですよ。
返信する

コメントを投稿

ブログラミング」カテゴリの最新記事