2012-05-14 49 views
5

Câu hỏi về dữ liệu gói R.table: có bao nhiêu cột data.table được xóa theo cách hiệu quả của bộ nhớ ?R: làm thế nào để xóa colums trong một data.table?

Giả sử các tên cột cần xóa được lưu trữ trong vector deleteCol.

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

Đối data.table, tôi đã cố gắng:

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

nhưng điều này đã unused argument(s) (with = FALSE)

Cảm ơn!

Trả lời

5

ok đây là một vài tùy chọn. Người cuối cùng dường như chính xác những gì bạn muốn ...

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 

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 

và cuối cùng là những gì bạn thực sự muốn:

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

Đó hiện các trick! Cảm ơn! –

+4

+1. Không cần đến 'anotherxy' nữa. ': =' sửa đổi 'xy' bằng tham chiếu. Nếu bạn muốn có một bản sao sửa đổi thì bạn phải 'copy()' một cách rõ ràng; ví dụ: 'anotherxy <- copy (xy) [, id: = NULL, với = FALSE]'. –

Các vấn đề liên quan