Cách chính xác để xóa nhiều cột khỏi dữ liệu là gì? Tôi hiện đang sử dụng mã bên dưới, nhưng đã nhận được hành vi bất ngờ khi tôi vô tình lặp lại một trong các tên cột. Tôi đã không chắc chắn nếu đây là một lỗi, hoặc nếu tôi không nên loại bỏ cột theo cách này.Xóa nhiều cột khỏi data.table
library(data.table)
DT <- data.table(x = letters, y = letters, z = letters)
DT[ ,c("x","y") := NULL]
names(DT)
[1] "z"
Các công trình trên tốt, nhưng
DT <- data.table(x = letters, y = letters, z = letters)
DT[ ,c("x","x") := NULL]
names(DT)
[1] "z"
+1. Thú vị tìm thấy. Nếu bạn xóa hai chữ "y", bạn sẽ bị "x" sang trái. Và nếu bạn xóa hai "z" s nó bị treo! – Frank
Bây giờ bạn có thể bọc LHS của ': =' gán trong một lời gọi đến 'unique()' (tức là sử dụng 'DT [, unique (c (" x "," x ")): = NULL]') để phòng thủ thêm. Vì điều này có vẻ giống như một lỗi ** data.table **, tôi đoán bạn sẽ chỉ phải làm điều đó cho đến khi Matthew Dowle chuyển cuộc gọi đó đến 'unique()' (hoặc cái gì đó tương đương với nó) bên trong '[ .data.table() ' –
Ý tưởng hay về duy nhất. Cảm ơn. –