r data.table

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.