Como excluir uma linha por referência em data.table?

Minha pergunta está relacionada à atribuição por referência versus cópia emdata.table. Eu quero saber se é possível excluir linhas por referência, semelhante ao

DT[ , someCol := NULL]

Eu quero saber sobre

DT[someRow := NULL, ]

Eu acho que há uma boa razão para essa função não existir, então talvez você possa apontar uma boa alternativa para a abordagem de cópia usual, como abaixo. Em particular, indo com o meu favorito do exemplo (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

Digamos que eu queira excluir a primeira linha deste data.table. Eu sei que posso fazer isso:

DT <- DT[-1, ]

mas muitas vezes podemos querer evitar isso, porque estamos copiando o objeto (e isso requer cerca de 3 * N de memória, se Nobject.size(DT), como apontado aqui. Agora eu encontreiset(DT, i, j, value). Eu sei como definir valores específicos (como aqui: definir todos os valores nas linhas 1 e 2 e colunas 2 e 3 para 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

Mas como posso apagar as duas primeiras linhas, digamos? Fazendo

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

define o DT inteiro para NULL.

Meu conhecimento de SQL é muito limitado, então vocês me dizem: dado data.table usa a tecnologia SQL, existe um equivalente ao comando SQL

DELETE FROM table_name
WHERE some_column=some_value

em data.table?

questionAnswers(6)

yourAnswerToTheQuestion