Ma question est liée à l'affectation par référence contre la copie des données.table. Je veux savoir si on peut supprimer des lignes de référence, semblable à
DT[,someCol:=NULL]
Je veux savoir à propos de
DT[someRow:=NULL, ]
Je pense qu'il y a une bonne raison pour expliquer pourquoi cette fonction n'existe pas, de sorte que vous pourriez peut-être juste le point de sortir une bonne alternative à l'habituel copie approche, comme ci-dessous. En particulier, aller avec mes favoris à partir de l'exemple(des données.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
dire que je veux supprimer la première ligne à partir de ces données.table. Je sais que je peux le faire
DT = DT[-1, ]
mais souvent, nous voulons éviter que, parce que nous sommes de la copie de l'objet (et qui a besoin d'environ 3*N de mémoire, si N objet.taille(DT), comme l'a souligné ici. Maintenant, j'ai trouvé set(DT,i,j,valeur). Je sais comment définir des valeurs spécifiques (comme ici: ensemble de toutes les valeurs dans les lignes 1 et 2 et les colonnes 2 et 3 à zéro)
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
mais comment puis-je effacer les deux premières lignes, dites? Faire
set(DT,1:2,1:3,NULL)
définit l'ensemble de la DT à NULL.
Mes connaissances SQL est très limité, de sorte que vous les gars me dire: compte tenu des données.le tableau utilise la technologie SQL, est-il équivalent à la commande SQL
DELETE FROM table_name
WHERE some_column=some_value
dans les données.de la table?