22

R のソース コード (ファイルR-3.2.2/src/main/gram.yの行28362852)調べると、R のパーサー/トークナイザーがそれをトークンと見なしていることがわかりまし:=LEFT_ASSIGNMENT

しかし、それを で代入演算子として使用しようとするとR.3.2.2
エラーが発生します (... の関数を見つけることができません) が、ご覧のとおり:=、R はそれを次のような代入と見なします。<-

> myVar := 42
Erreur : impossible de trouver la fonction ":="
> :=
Erreur : unexpected assignment in ":="
> <-
Erreur : unexpected assignment in "<-"

これはバグですか、それともトーク:=ナイザーのソース コードからトークンを削除する必要がありますか?

:=Rの演算子についての過去の話はありますか?

4

3 に答える 3

17

これは、以前は許可されていた代入演算子でした。2001 年の John Chambers の記事を参照してください。

R の開発バージョンでは、= 演算子を使用して、一部の代入を C または Java スタイルで記述できるようになりました。これにより、S-Plus (および C、Java、およびその他の多くの言語) との互換性が向上します。

以前に許可されていたすべての代入演算子 (<-、:=、_、および <<-) は引き続き完全に有効です。

この:=機能はもう存在しないようですが、次のように「再度有効にする」ことができます。

`:=` <- `<-`
x:=3
x
[1] 3
于 2015-09-28T08:19:43.257 に答える
9

明確にするために、R代入演算子は<-=です。

それらに関する情報を取得するには、次のように入力します。

 ?`<-` 

<-コマンドラインの代わりに。<<-親環境の変数に影響を与えるオペレーターも存在します。

に関して:=は、このオペレーターはパッケージ内のjオペレーターです。data.table読み取り可能で、オブジェクトdefined as内でのみ使用できます。data.tableこれを説明するために、最初の列の値が に等しい場合、2 番目の列をb(col2値で定義) に変更します。b1

library(data.table)

dt <- data.table(col1=c(1,2,1,2,3), col2 = letters[1:5])

dt[col1==1, col2:='b']

詳細な説明:

?`:=`

それが明確になることを願っています。

于 2015-09-28T08:08:03.550 に答える