<-
と->
の使用方法を知っていて、そこに areseveralwriteupsequals
割り当てと矢印割り当ての違いについてですが、->
よりも_<-
を優先するタイミングはわかりません。
割り当てのために<-
を使用することで、コミュニティが合体したようです。
グーグル Rスタイルガイド もハドリーウィッカム tidyverse Rスタイルガイド 割り当てセクションで->
に言及することもできます。
S/S-PLUS開発者が右矢印割り当て演算子->
を使用するようになった設計上の考慮事項に興味があります。 ->
または<-
と比較して、=
を使用する設定の方が読みやすい(または入力しやすい)と見なされますか?
私は、正しい割り当てのセマンティクスを許可する他の言語に精通していません。この点でどの言語がRに影響を与えましたか?
私は本/初期設計文書/ユーザーマニュアル/アーカイブされたメーリングリストまたは他の参考文献を引用して、S作者/設計者の意図が前方矢印割り当て演算子に入れることを確立するための答えを探しています。
The New S Language(Becker、Chambers and Wilks 1988)の演習への回答から、Googleブックスを介して:
最後に結果を保存することをお勧めすることだけを覚えておくために長い式を入力する場合、右矢印を使用すると、行を再入力せずに割り当てを実行できます。
これは、Sユーザーが最新の [〜#〜] repl [〜#〜] /interactive環境で利用可能な行編集機能なしで、コンソールで直接作業していたことを示唆しています。
考古学:Googleブックスの基礎資料を調べました。 3つの関連書籍があります。
ブルーブック:The New S LanguageBecker、Chambers and Wilks(Wadsworth and Brooks/Cole 1988、but reissued by 2018 !! by CRC Press)
->
本文内:しかし、それは付録にあります:
->
本文内:この本をあまり検索できないので、->
は、付録のどこかに記載されている場合があります。
下線付きの赤い文章は、最初の下線付きの行にタイプミスがあり、->
ではなく←...
上記の演習の答えのスクリーンショットを次に示します。
1985年の書籍のコピーが必要な場合は、34.41ドルまたは1070.99ドルで入手できます(ただし、送料無料です!)...
左から右への割り当てを許可するRの理由を推測することはできません。 mostプログラミング言語(実際にはほとんどすべて)が右から左への割り当てのみを実行することは確かに真実です。
とはいえ、Rはそれだけではありません。
私は、正しい割り当てのセマンティクスを許可する他の言語に精通していません。
私はそれを可能にする少なくとも3つの他の(家族の)言語を考えることができます:
アセンブリ言語は、しばしば左から右への割り当てを実行します。たとえば、影響力のあるAT&T構文は、次のような割り当てを記述します。
movl $1, %eax
これにより、値1
をEAXレジスタに追加します。 (一方、Intelのx86構文は右から左への割り当てを実行します。)
TI-BASICのSTO(「ストア」)オペレーションは次のように記述されます。
1→A
COBOLは、複数の形式の左から右への割り当てを使用します。
MOVE 1 TO x
ADD 2 TO x
等.
しかし、これらの言語のいずれかがRの割り当て構文のインスピレーションになったかどうかは疑問です。対照的に、APLプログラミング言語は矢印割り当てを使用し、S(したがって間接的にR)がthat;からインスピレーションを得たと一般に受け入れられています。ただし、APLは右から左への割り当て(var ← value
)。
個人的な好みの問題だと思います。
->
はmagrittrパイプに先行していましたが、最近の使用例の1つは、->
を使用して、そのようなパイプで左から右へのフローを維持できることです。
library(magrittr)
input %>% fun1 %>% fun2 -> result
一方、<-
が主に使用される場合、その場合でも<-
を使用することもできます。
<-
の引数は、特に結果変数に適切な名前が付けられている場合に、設定されている値で行を開始することです。一方、右側はメカニズムなどです。結果に従属する詳細であり、概要から始めて、後で詳細に取り掛かるのが好きです。以下では、パラメータk
を定義しています。 3であるか、ここでのように定数で定義されているか、複雑な式がステートメントの目的に付随しているように見えます。
k <- 3
個人的には、->
は使用しません。
Rは、数学を表現するのにかなり自然な構文を持つことを意図しています。 ->
は、実際にはマトリックスの一部の 基本的な行操作 を記述する際の一般的な表記法です。例えば、 s*R_i -> R_i
は、行iをs×行iで置き換える操作を示すために使用されます。何かのようなもの 2*A[1,] -> A[1,]
は完全に有効なRです。これらの考慮事項が設計上の決定と関係があるかどうかはわかりませんが、数学言語にとって妥当な選択であることを示しています。