传递data.table`by =`中的值列表

时间:2017-02-06 18:40:50

标签: r data.table

StackOverflow question about rolling sum中,它给出了一个答案,涉及在iby= data.table参数中使用值列表。

当查看包装手册或小插图时,这个功能对我来说似乎并不明显。

为了理解这个功能,我创建了一些带有一些不直观结果的简单代码,我只是试图将不同的索引和组列表传递给函数iby,看看输出是什么由函数j给出。

library(data.table)
DT1 <- data.table(x = c(1, 2, 3), y = c('a', 'b', 'b'))
DT2 <- data.table(x = c(1, 2, 3, 4) , y = c('a', 'a', 'b', 'c'))
DT1[, idx := .I]
DT2[, idx := .I]
DT1[DT2$x, idx, by = DT2$y]

   DT2 idx
1:   a   1
2:   a   2
3:   b   3
4:   c   0

DT1[DT2$x, x, by = DT2$y]

   DT2             x
1:   a  1.000000e+00
2:   a  2.000000e+00
3:   b  3.000000e+00
4:   c 1.919019e-316

DT1[DT2$idx, x, by = DT2$y]

   DT2             x
1:   a  1.000000e+00
2:   a  2.000000e+00
3:   b  3.000000e+00
4:   c 1.919019e-316

有人可以解释这个功能吗?为什么这个简单的例子会给出虚假的结果?

我期待这段代码返回错误,因为我正在传递DT2中不在DT1中的组和索引。

0 个答案:

没有答案