Tôi đang cố gắng tìm hiểu gói data.table
trong R
. Tôi có bảng dữ liệu có tên là DT1
và khung dữ liệu DF1
và tôi muốn đặt một số trường hợp theo một điều kiện lôgic (tách rời). Đây là mã của tôi bây giờ:Bạn sẽ dịch điều này sang ngôn ngữ gói data.table trong R như thế nào?
DF1[DF1$c1==0 | DF1$c2==1,] #the data.frame way with the data.frame DF1
DT1[DT1$c1==0 | DT1$c2==1,] #the data.frame way with the data.table DT1
Trên trang 5 của "Introduction to the data.table package in R", tác giả đưa ra một ví dụ về một cái gì đó tương tự nhưng với một conjuction (thay thế |
bởi &
trong dòng thứ hai ở trên) và nhận xét đó là một sử dụng xấu của data.table
gói. Ông gợi ý todo nó theo cách này thay vì:
setkey(DT1,c1,c2)
DT1[J(0,1)]
Vì vậy, câu hỏi của tôi là: Làm thế nào tôi có thể viết điều kiện phân ly với cú pháp data.table
gói? Có phải đó là lạm dụng dòng thứ hai của tôi DT1[DT1$c1==0 | DT1$c2==1,]
? Có tương đương với J
nhưng để tách rời?
Tôi nghĩ câu trả lời của bạn vẫn là quét vectơ. Cảm ơn anyway @DWin! – Nestorghh
Có 3 lần quét vectơ (hai '==' và một '|') cộng với phân bổ vectơ liên quan như được mô tả trong họa tiết giới thiệu. Tài liệu đó cho thấy một cái gì đó tương tự như chứng minh _bad_ sử dụng không sử dụng tốt. @ Nestorghh Nhưng bạn có thực sự có nghĩa là disjoint trên hai cột ('c1' và' c2')? Tách rời trong một cột là câu trả lời của Christoph: 'J (c (0,1))'. Bỏ qua hai cột là quét vectơ cho đến khi các phím thứ cấp được tích hợp hoặc tìm kiếm "khóa phụ thủ công" cho một phương thức thích hợp hơn trong thời gian chờ đợi. –
Tôi đã thấy rằng nó được gọi là "xấu" thực hành, nhưng tôi không thấy một ví dụ về "sử dụng đúng" sẽ áp dụng trong trường hợp hai cột này, cũng như tôi không tìm thấy một trong FAQ, cũng không tìm kiếm tài liệu lưu trữ, trong nhiều lần thử nghiệm. –