目前尚不清楚为什么您不想使用它。使用DT[, .(mmm = mean(x)), by = grp][, grp := NULL][]
将是我的第一选择。
虽然我不建议这样做,但您也可以使用:
DT[, .(mmm = DT[, .(mmm = mean(x)), by = grp]$mmm)]
这也会给你想要的结果:
mmm
1: 5
2: 6
尽管您会得到相同的结果,但最好不要使用此方法。这样做的主要缺点是,当您想要汇总的值列以上时,您的代码会变得不必要的复杂。然后你会得到类似的东西:
DT[, .(mx = DT[, .(mx = mean(x)), by = grp]$mx, my = DT[, .(my = mean(y)), by = grp]$my)]
当使用正常的数据表方式将会:
DT[, .(mx = mean(x), my = mean(y)), by = grp][, grp := NULL][]
总结一下:
使用DT[, .(mmm = mean(x)), by = grp][, grp := NULL][]
因此,方法将是您的最佳选择。