R data.table j仅在执行联接时没有by时有效
我就直接跳进去R data.table j仅在执行联接时没有by时有效,r,data.table,R,Data.table,我就直接跳进去 DT_1 <- data.table(pk = c(1,1,2,2), val = 1:4, key = 'pk') DT_2 <- data.table(pk = 1:2, att = c('a','b'), key = 'pk') 这不是 > DT_2[i = DT_1, j = `:=`(max_val = max(val)), by = .(pk)] Error in `[.data.table`(DT_2, i = DT_1, j = .(max(v
DT_1 <- data.table(pk = c(1,1,2,2), val = 1:4, key = 'pk')
DT_2 <- data.table(pk = 1:2, att = c('a','b'), key = 'pk')
这不是
> DT_2[i = DT_1, j = `:=`(max_val = max(val)), by = .(pk)]
Error in `[.data.table`(DT_2, i = DT_1, j = .(max(val)), by = .(pk)) :
object 'val' not found
为什么要这样做?我该怎么做?您希望实现什么?请给出一个样本输出
by=.EACHI
是连接期间唯一受支持的聚合,据我所知。你可以做DT_2[DT_1][,max(val),by=pk]
,尽管这并不理想。这可能是相关的:谢谢你链接到@Frank。我提出了FR的优先权。谢谢你的by=.EACHI
tip@Frank。这正好解决了我的用例问题,但我认为创建一个is没有的示例并不难。这个Q要求的功能与这个相同,但这里它要求的是:=
,所以不要标记为重复
> DT_2[i = DT_1, j = `:=`(max_val = max(val)), by = .(pk)]
Error in `[.data.table`(DT_2, i = DT_1, j = .(max(val)), by = .(pk)) :
object 'val' not found