Jak usunąć wiersz według odniesienia w data.table?

Moje pytanie dotyczy przypisania przez odniesienie do kopiowaniadata.table. Chcę wiedzieć, czy można usuwać wiersze według odniesienia, podobnie jak

DT[ , someCol := NULL]

Chcę o tym wiedzieć

DT[someRow := NULL, ]

Sądzę, że jest dobry powód, dla którego ta funkcja nie istnieje, więc może po prostu wskażesz dobrą alternatywę dla zwykłego podejścia do kopiowania, jak poniżej. W szczególności, chodzenie z moim ulubionym z przykładu (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

Powiedz, że chcę usunąć pierwszy wiersz z tej tabeli danych. Wiem, że potrafię to zrobić:

DT <- DT[-1, ]

ale często możemy chcieć tego uniknąć, ponieważ kopiujemy obiekt (a to wymaga około 3 * N pamięci, jeśli N)object.size(DT), jak wskazano tutaj. Teraz znalazłemset(DT, i, j, value). Wiem, jak ustawić określone wartości (jak tutaj: ustaw wszystkie wartości w wierszach 1 i 2 oraz kolumny 2 i 3 na zero)

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

Ale jak mogę wymazać pierwsze dwa wiersze, powiedzmy? Robić

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

ustawia cały DT na NULL.

Moja wiedza SQL jest bardzo ograniczona, więc wy mówicie: podana data.table używa technologii SQL, czy istnieje odpowiednik polecenia SQL

DELETE FROM table_name
WHERE some_column=some_value

w data.table?

questionAnswers(6)

yourAnswerToTheQuestion