Wie lösche ich eine Zeile nach Referenz in data.table?

Meine Frage bezieht sich auf die Zuordnung von Referenz zu Kopiedata.table. Ich möchte wissen, ob man Zeilen per Referenz löschen kann, ähnlich wie

DT[ , someCol := NULL]

Ich möchte über wissen

DT[someRow := NULL, ]

Ich denke, es gibt einen guten Grund, warum diese Funktion nicht existiert. Vielleicht können Sie hier eine gute Alternative zum üblichen Kopieransatz nennen. Insbesondere mit meinem Favoriten aus Beispiel (data.table) gehen,

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

Angenommen, ich möchte die erste Zeile aus dieser data.table löschen. Ich weiß ich kann das:

DT <- DT[-1, ]

aber oft wollen wir das vermeiden, weil wir das Objekt kopieren (und das erfordert ungefähr 3 * N Speicher, wenn Nobject.size(DT), wie hier darauf hingewiesen. Jetzt habe ich gefundenset(DT, i, j, value). Ich weiß, wie man bestimmte Werte setzt (wie hier: setze alle Werte in den Zeilen 1 und 2 und den Spalten 2 und 3 auf Null)

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

Aber wie kann ich zum Beispiel die ersten beiden Zeilen löschen? Tun

set(DT, 1:2, 1:3, NULL)

setzt die gesamte DT auf NULL.

Meine SQL-Kenntnisse sind sehr begrenzt, also sagt ihr mir: Wenn data.table SQL-Technologie verwendet, gibt es eine Entsprechung zum SQL-Befehl

DELETE FROM table_name
WHERE some_column=some_value

in data.table?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage