Tôi đang ở trên data.table 1.9.3 và có thể tôi sai, nhưng tôi không nhớ lại số sau đây để được mong đợi trước đó.Tham gia phạm vi được thừa kế bằng theo dữ liệu.tại
tôi xây dựng 2 data.tables, dta và DTB
> dta
idx vala fdx
1: 1 2 a
2: 2 4 a
3: 3 6 b
> dtb
idx valb
1: 1 3
2: 4 6
> dput(x = dta)
structure(list(idx = c(1, 2, 3), vala = c(2, 4, 6), fdx = c("a",
"a", "b")), .Names = c("idx", "vala", "fdx"), row.names = c(NA,
-3L), class = c("data.table", "data.frame"), .internal.selfref =
<pointer: 0x0000000000110788>, sorted = "idx")
> dput(x = dtb)
structure(list(idx = c(1, 4), valb = c(3, 6)), .Names = c("idx",
"valb"), row.names = c(NA, -2L), class = c("data.table", "data.frame"
), .internal.selfref = <pointer: 0x0000000000110788>, sorted = "idx")
Điều quan trọng là idx trong cả hai trường hợp.
Các công trình sau đây, tất nhiên
> dta[dtb, sum(valb)]
[1] 9
Tuy nhiên điều này không
> dta[dtb, sum(valb), by = fdx]
Error in `[.data.table`(dta, dtb, sum(valb), by = fdx) :
object 'valb' not found
Nhưng điều này không
> dta[dtb][, sum(valb), by = fdx]
fdx V1
1: a 3
2: NA 6
Nếu chúng ta thấy bước trung gian
> dta[dtb]
idx vala fdx valb
1: 1 2 a 3
2: 4 NA NA 6
tôi dự kiến sẽ có
dta[dtb, sum(valb), by = fdx] == dta[dtb][, sum(valb), by = fdx]
ở đâu tôi đi sai?
Đã giải quyết vấn đề này là [FR # 733] (https://github.com/Rdatatable/data.table/issues/733). Ngoài ra nộp một [FR # 732] có liên quan (https://github.com/Rdatatable/data.table/issues/732). Cảm ơn. – Arun
Tôi có thể tái tạo hành vi này (= lỗi?) Trong dữ liệu.table 1.9.4 quá, có bất kỳ tin tức nào không? –