2012-05-14 49 views
5

Pregunta sobre el paquete R data.table: ¿cómo se eliminan varias columnas data.table en una forma eficiente de memoria ?R: ¿cómo eliminar columnas en una tabla de datos?

Supongamos que los nombres de las columnas que se eliminarán se almacenan en el vector deleteCol.

In a data.frame, it is: 
DF <- DF[deleteCol] <- list() 

Para data.table, he intentado:

DT[, deleteCol, with=FALSE] <- list() 

pero esto dio unused argument(s) (with = FALSE)

Gracias!

Respuesta

5

bien aquí hay algunas opciones. El último parece exactamente lo que quiere ...

x<-1:5 
y<-1:5 
z<-1:5 
xy<-data.table(x,y,z) 
NEWxy<-subset(xy, select = -c(x,y)) #removes column x and y 

y

id<-c("x","y") 
newxy<-xy[, id, with=FALSE] 
newxy #gives just x and y e.g. 

    # x y 
#[1,] 1 1 
#[2,] 2 2 
#[3,] 3 3 
#[4,] 4 4 
#[5,] 5 5 

y, finalmente, lo que realmente quiere:

anotherxy<-xy[,id:=NULL,with=FALSE] # removes comuns x and y that are in id 

#  z 
#[1,] 1 
#[2,] 2 
#[3,] 3 
#[4,] 4 
#[5,] 5 
+0

Eso hace el truco! ¡Gracias! –

+4

+1. Sin embargo, no es necesario el 'anotherxy <-'. ': =' modifica 'xy' por referencia. Si desea una copia modificada, debe 'copiar()' explícitamente; por ejemplo, 'anotherxy <- copy (xy) [, id: = NULL, with = FALSE]'. –

Cuestiones relacionadas