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