R数据table将值按组分组到向量中

R data table group values into vector by group

我有以下数据table:

library(data.table)
dat = data.table(j = c(3,8,9,11,10,28, 5), gr = c(9,9,9,9,10,10, 10), day = c(1,1,2,2,1,1,2)) 
  > dat
    j gr day
1:  3  9   1
2:  8  9   1
3:  9  9   2
4: 11  9   2
5: 10 10   1
6: 28 10   1
7:  5 10   2

我想为每个组(gr 列)和日期创建一个 vector,其中包含 j 中的所有可用值。

我试过以下方法都无济于事:

dat[, j[1:.N], by = .(gr, day )]
dat[, list(j[1:.N]), by = .(gr, day )]

这部分有效,但我需要做一些进一步的操作才能获得所需的结果:

dat[, list(list(Reduce(c, j, accumulate = T))), by = .(gr, day )]

我理想的结果是这样的:

> res_dat
   gr day all_values
1:  9   1        3,8
2:  9   2       9,11
3: 10   1      10,28
4: 10   2          5

我不希望这是一个字符串,我希望它是一个向量列表所以这个答案不适用。

我们需要 list 列。 .(data.table.

list( 的简洁语法
dat[, .(j = .(j)), by = .(gr, day)]

-输出

   gr day     j
1:  9   1   3,8
2:  9   2  9,11
3: 10   1 10,28
4: 10   2     5

即也可以写成

dat[, list(j = list(j)), .(gr, day)]
   gr day     j
1:  9   1   3,8
2:  9   2  9,11
3: 10   1 10,28
4: 10   2     5