Eliminar mĂșltiples columnas de data.table
(2)
Esta Q ha sido respondida, pero considera esto como una nota al margen.
Prefiero la siguiente sintaxis para eliminar varias columnas
DT[ ,`:=`(x = NULL, y = NULL)]
porque coincide con el de agregar columnas múltiples (variables)
DT[ ,`:=`(x = letters, y = "Male")]
Esto también verifica los nombres de columna duplicados. Así que intentar soltar x
dos veces arrojará un mensaje de error.
¿Cuál es la forma correcta de eliminar varias columnas de una tabla de datos? Actualmente estoy usando el código a continuación, pero tuve un comportamiento inesperado cuando repetí accidentalmente uno de los nombres de columna. No estaba seguro de si esto era un error, o si no debería eliminar las columnas de esta manera.
library(data.table)
DT <- data.table(x = letters, y = letters, z = letters)
DT[ ,c("x","y") := NULL]
names(DT)
[1] "z"
Lo anterior funciona bien, pero
DT <- data.table(x = letters, y = letters, z = letters)
DT[ ,c("x","x") := NULL]
names(DT)
[1] "z"
Esto parece un error sólido y reproducible. Ha sido archivado como Bug # 2791 .
Parece que la repetición de la columna intenta eliminar las columnas posteriores.
Si no quedan columnas, entonces R se bloquea.
ACTUALIZACIÓN : Ahora arreglado en v1.8.11. De NEWS :
Asignar a la misma columna dos veces en la misma consulta ahora es un error en lugar de un bloqueo en algunas circunstancias; por ejemplo, DT [, c ("B", "B"): = NULL] (elimine por referencia la misma columna dos veces). Gracias a Ricardo ( #2751 ) y matt_k ( # 2791 ) por informar. Pruebas añadidas.