CẬP NHẬT: Cũ câu hỏi ... nó đã được giải quyết bởi v1.5.3 data.table trong Tháng Hai 2011.R: Khi sử dụng dữ liệu.tôi làm cách nào để nhận các cột y khi tôi thực hiện x [y]?
Tôi cố gắng để sử dụng gói data.table
, và thực sự thích speedups Tôi nhận được, nhưng tôi đang bối rối bởi lỗi này khi tôi làm x[y, <expr>]
nơi x
và y
là "dữ liệu bảng" với chìa khóa giống nhau, và <expr>
chứa tên cột của cả hai x
và y
:
require(data.table)
x <- data.table(foo = 1:5, a = 5:1)
y <- data.table(foo = 1:5, boo = 10:14)
setkey(x, foo)
setkey(y, foo)
> x[y, foo*boo]
Error in eval(expr, envir, enclos) : object 'boo' not found
upda TE ... Để làm rõ các chức năng Tôi đang tìm kiếm trong ví dụ trên: Tôi cần phải làm như tương đương với các nội dung sau:
with(merge(x,y), foo*boo)
Tuy nhiên theo trích dưới đây từ data.table
FAQ, điều này nên đã làm việc :
Cuối cùng, mặc dù nó có vẻ như thể x [y] không trả lại các cột trong y, bạn có thể thực sự sử dụng các cột từ y trong biểu thức j. Đây là những gì chúng tôi có nghĩa là bằng cách tham gia phạm vi được kế thừa. Tại sao không chỉ cần trả lại liên minh của tất cả các cột từ x và y và sau đó chạy các biểu thức trên đó? Nó tóm tắt thành tính hiệu quả của mã và nhanh hơn cho chương trình. Khi bạn viết x [y, foo boo], dữ liệu. Có thể tự động kiểm tra biểu thức j để xem những cột nào sử dụng. . Nó sẽ chỉ tập hợp con, hoặc nhóm, chỉ những cột đó. Bộ nhớ chỉ được tạo cho các cột sử dụng j . Giả sử foo nằm trong x và boo nằm trong y (cùng với 20 cột khác trong y). Không phải là x [y, foo boo] nhanh hơn để chương trình và nhanh hơn để chạy hơn một bước hợp nhất tiếp theo là một tập hợp con khác là bước?
Tôi biết this question đã giải quyết được vấn đề tương tự nhưng dường như không được giải quyết thỏa đáng. Bất cứ ai biết những gì tôi đang thiếu hoặc hiểu lầm? Cảm ơn.
CẬP NHẬT: Tôi đã yêu cầu danh sách gửi thư trợ giúp bảng dữ liệu và tác giả gói (Matthew Dowle) replied thực sự Câu hỏi thường gặp ở trên là sai, vì vậy cú pháp tôi đang sử dụng sẽ không hoạt động các cột y
trong đối số j
(tức là thứ hai) khi tôi thực hiện x[y,...]
.
Nhưng bạn đã hỏi một số thời gian trước đây và nó đã được giải quyết bởi v1.5.3 phát hành cho CRAN vào tháng Hai năm 2011. Hãy xem đó là TIN TỨC, mới? Data.table và sửa chữa FAQ. –
@Matthew cảm ơn bạn, vâng tôi biết nó đã được giải quyết bằng bản phát hành mới nhất, và tôi vui vì bạn đã chỉ ra nó ở đây để nó rõ ràng cho người khác. –