Tôi có một data.table mà tôi muốn chia thành hai. Tôi làm điều này như sau:chia dữ liệu.table
dt <- data.table(a=c(1,2,3,3),b=c(1,1,2,2))
sdt <- split(dt,dt$b==2)
nhưng nếu tôi muốn một cái gì đó như thế này như một bước tiếp theo
sdt[[1]][,c:=.N,by=a]
tôi nhận được thông báo sau. nhắn
Cảnh báo: Trong
[.data.table
(sdt [[1]],,:=
(c, Đô), bởi = a): .internal.selfref không hợp lệ phát hiện và cố định bằng cách lấy một bản sao của toàn bảng, do đó: = có thể thêm cột mới này bằng cách tham chiếu. Tại một điểm trước đó, dữ liệu này có thể được sao chép bằng R. Tránh khóa < -, tên < - và attr < - trong đó R hiện tại (và kỳ quặc) có thể sao chép toàn bộ dữ liệu . Thay vào đó, hãy sử dụng cú pháp set * để tránh sao chép: setkey(), tên set() và setattr(). Ngoài ra, danh sách (DT1, DT2) sẽ sao chép toàn bộ DT1 và DT2 (các bản sao của danh sách R() có tên là đối tượng), sử dụng hàm reflist() thay thế nếu cần (để được triển khai). Nếu thông báo này không hữu ích, vui lòng báo cáo về dữ liệu có thể trợ giúp để nguyên nhân gốc rễ có thể được khắc phục.
Chỉ cần tự hỏi liệu có cách nào tốt hơn là tách bảng sao cho hiệu quả hơn (và không nhận được thông báo này)?
Tại sao bạn muốn chia data.table ở nơi đầu tiên? Tách chúng tôi tạo danh sách, vì vậy cảnh báo đề cập đến lý do tại sao bản sao đã diễn ra – mnel
Tôi đang tạo hai bộ cho thử nghiệm của mình, dựa trên phân chia thời gian. – jamborta
Tôi tò mò về ý nghĩa của '.N' trong trường hợp này? –