R data.table j仅在执行连接时没有时才有效

Ada*_*dam 5 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')
Run Code Online (Sandbox Code Playgroud)

这有效.

> DT_2[i = DT_1, j = `:=`(max_val = max(val))]
> DT_2
   pk att max_val
1:  1   a       4
2:  2   b       4
Run Code Online (Sandbox Code Playgroud)

事实并非如此.

> 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
Run Code Online (Sandbox Code Playgroud)

为什么以及如何处理它?