Câu hỏi của tôi liên quan đến dữ liệu R. có thể với nhiều khóa. lấy ví dụ này:Kết hợp Tham gia với Không tham gia vào dữ liệu.table?
library(data.table)
example(data.table)
key(DT)
[1] "x" "y"
và cho rằng tôi muốn có một biến thể của "x không bằng b và y không bằng 3", như ở đây:
DT[!J("b",3)]
x y v v2 m
1: a 1 42 NA 42
2: a 3 42 NA 42
3: a 6 42 NA 42
4: b 1 4 84 5
5: b 6 6 84 5
6: c 1 7 NA 8
7: c 3 8 NA 8
8: c 6 9 NA 8
Biến tôi muốn là "x EQUAL b và y KHÔNG bằng 3 ", như trong đây:
DT[J("b",!3)]
Error in `[.data.table`(DT, J("b", !3)) :
typeof x.y (double) != typeof i.V2 (logical)
Bất kỳ cơ hội nào để J() có thể phủ nhận một số phím? Cảm ơn!
tôi thấy cú pháp sau một chút minh bạch hơn: 'DT [x == 'b' & y! = 3] ' –
Xin chào @GaryWeissman, cú pháp của bạn ngụ ý quét vectơ. Điểm của data.table và tham gia hoạt động là để tránh chính xác những người, bằng cách sử dụng các phím. Nhưng tôi đoán bạn là đúng cho người dùng không data.table dễ hiểu hơn. –
Tôi không nghĩ rằng hàm 'J' hỗ trợ các toán tử logic không đồng nhất giữa các đối số. Tôi tin rằng cú pháp trên vẫn còn nhanh hơn trong DT hơn trong DF. –