代入は =<-

要約: 本サイトでは代入に = を使っていますが、今は <- を使う人が多数派です。気になったら =<- に読み替えてください。


以下は詳しい話です。

Rの代入(付値)は x <- 5 でも x = 5 でもできます。

> x = 1    # xに1を代入
> x <- 1   # xに1を代入
> x<-1     # xに1を代入
> x < -1   # xが-1より小さいか

Rで <- の代わりに = が使えるようになったのは2001年からのようです。Rの前身のSについては、= が使えるようになったのは1998年のVersion 4からで、John M. Chambers, Programming with Data: A Guide to the S Language (1998) では主に = が使われ、p.15で <- も使えることが言及されています。Use = or <- for assignment? に歴史的な事情がいろいろ書いてあります。

しかし、最近は <- が優勢です。Google's R Style Guide でも <- が使ってあります。

代入に = を使う人も、<- が代入であることを意識していないと、とんでもないバグに陥ってしまうことがあります。例えば条件判断で

if (a < -1) x = 1 else x = 2

をうっかり

if (a <-1) x = 1 else x = 2

と書くと a に1を代入してしまい、1は「真」なので x はつねに1になってしまいます。

このサイトでは、Pythonのコーディング規則 PEP 8 に倣って、代入の = は両側にスペースを入れ、関数の引数では = の両側にスペースを入れない流儀を使っています:

x = sqrt(2)
print(x, digits=16)