私の質問は、参照による割り当てとコピーによる割り当てに関連していdata.table
ます。次のように、参照によって行を削除できるかどうかを知りたい
DT[ , someCol := NULL]
について知りたい
DT[someRow := NULL, ]
この関数が存在しないのには十分な理由があると思います。そのため、以下のように、通常のコピー アプローチに代わる適切な方法を指摘していただければ幸いです。特に、example(data.table) のお気に入りを使用すると、
DT = data.table(x = rep(c("a", "b", "c"), each = 3), y = c(1, 3, 6), v = 1:9)
# x y v
# [1,] a 1 1
# [2,] a 3 2
# [3,] a 6 3
# [4,] b 1 4
# [5,] b 3 5
# [6,] b 6 6
# [7,] c 1 7
# [8,] c 3 8
# [9,] c 6 9
この data.table から最初の行を削除したいとします。私はこれを行うことができることを知っています:
DT <- DT[-1, ]
しかし、オブジェクトをコピーしているため、それを避けたい場合がよくあります (ここで指摘されているようobject.size(DT)
に、 N の場合、約 3*N のメモリが必要です。今、私は を見つけました。特定の値を設定する方法を知っています (ここのように: set all)行 1 と 2 および列 2 と 3 の値をゼロに)set(DT, i, j, value)
set(DT, 1:2, 2:3, 0)
DT
# x y v
# [1,] a 0 0
# [2,] a 0 0
# [3,] a 6 3
# [4,] b 1 4
# [5,] b 3 5
# [6,] b 6 6
# [7,] c 1 7
# [8,] c 3 8
# [9,] c 6 9
しかし、どうすれば最初の 2 行を消去できますか? やっている
set(DT, 1:2, 1:3, NULL)
DT 全体を NULL に設定します。
私の SQL の知識は非常に限られているので、教えてください: data.table が SQL テクノロジを使用している場合、SQL コマンドに相当するものはありますか?
DELETE FROM table_name
WHERE some_column=some_value
data.table?