読者です 読者をやめる 読者になる 読者になる

ブログ

クソブログ

Rの代入演算子 <- をtypoして恐ろしいことが起こった

R

問題

Rで

x <- c(1, 2, 3)

は、xという変数に右辺のベクトルをアサインする式だが、この <- という演算子

y <-- c(1, 2, 3)

と打ち間違えると何が起こるか分かるだろうか?そんな演算子ねーよボケ、とエラーを吐いて停止するだろうと人間なら期待するが、R処理系は世にも恐ろしいことをやってのける。

答え

上の式のアサイン(?)は何の警告もなく完了し、yの値を出力すると

> y
[1] -1 -2 -3

と、各要素を-1倍した反対向きのベクトルがアサインされる。もう少し分かりやすく言うと、パリティ反転されたベクトルがアサインされる。同一文字を2回間違って入力することはたまにあるが、アサイン演算子のマイナス記号を2回入力したのを気づかないまま解析を進めると、この世ではあり得ない結果がどんどん出てきてデバッグに時間を盗られて夜中の2時56分にこのような下らない記事を書く羽目に陥る。

まとめ

この鬼畜仕様は何か意味なり歴史があるのだろうか?

追記

z <--- c(1, 2, 3)

> z
[1] 1 2 3

と、もう一回パリティ反転されてもとに戻ったw

w <-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- c(1, 2, 3)

パリティはどうなるだろうねえ。