<-.data.table
コピーを作成しないので、次を使用できます<-
:
data.tableオブジェクトを作成します。
library(data.table)
di <- data.table(iris)
新しい列を作成します。
di <- di[, z:=1:nrow(di)]
di
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species z
# [1,] 5.1 3.5 1.4 0.2 setosa 1
# [2,] 4.9 3.0 1.4 0.2 setosa 2
# [3,] 4.7 3.2 1.3 0.2 setosa 3
# [4,] 4.6 3.1 1.5 0.2 setosa 4
# [5,] 5.0 3.6 1.4 0.2 setosa 5
# [6,] 5.4 3.9 1.7 0.4 setosa 6
# [7,] 4.6 3.4 1.4 0.3 setosa 7
# [8,] 5.0 3.4 1.5 0.2 setosa 8
# [9,] 4.4 2.9 1.4 0.2 setosa 9
# [10,] 4.9 3.1 1.5 0.1 setosa 10
# First 10 rows of 150 printed.
Rは、インタラクティブモードでオブジェクトの値のみを出力することも覚えておく価値があります。
したがって、バッチモードでは、次のように簡単に使用できます。
di[, z:=1:nrow(di)]
バッチモードでスクリプトとして実行した場合、これは出力を生成しません。
Matthew Dowleからの詳細情報:
FAQ2.21および2.22も参照してください。
2.21なぜDT[i,col:=value]
全体を返すのDT
ですか?表示される値がない(と一致する<-
)か、更新された行数を含むメッセージまたは戻り値のいずれかを期待していました。データが実際に参照によって更新されているかどうかは明らかではありません。
複合構文が機能するように。例:DT[i,done:=TRUE][,sum(done)]
。更新された行数は、クエリごとに、またはを使用してグローバルに冗長性がオンになっている場合に返されますoptions(datatable.verbose=TRUE)
。
2.22わかりましたが、の戻り値はDT[i,col:=value]
目に見えない形で返されませんか?
- しようとしましたが、Rは内部的に可視性を強制し
[
ます。FunTabのeval列(src / main / names.cを参照)の値は、[
force onを0
意味
R_Visible
します(R-Internalsセクション1.6を参照)。したがって、
自分自身を直接試しinvisible()
たり設定したりすると、src / main/eval.cで強制的に再度オンになります。R_Visible
0
eval
- この振る舞いに慣れた後、あなたはそれを好むようになるかもしれません(私たちは持っています)。結局のところ、を使用してサブ割り当てし
<-
、すぐにデータを調べて問題がないことを確認するのは何回ですか?
- データを返す
:=
aにミックスすることもできます。j
混合更新と1つのクエリで選択します。j
更新だけで(そしてそれから熱心に振る舞う)混乱する可能性があるかどうかを検出すること。
Matthew Dowleからの2番目の更新:
これで解決策が見つかり、v1.8.3を使用しても結果が出力されなくなりました:=
。FAQ2.21および2.22を更新します。