在data.table
中,j
中的列表默认会被转换为列。如果希望保持列表的结构而不被转换为列,可以使用by = .EACHI
和.SD
来实现。
下面是一个示例代码:
library(data.table)
# 创建一个包含列表的data.table
DT <- data.table(
x = c(1, 1, 2, 2),
y = c("a", "b", "a", "b"),
z = list(1:3, 4:6, 7:9, 10:12)
)
# 使用by = .EACHI和.SD来保持列表的结构
DT[, .(z), by = .(x, y), .SDcols = "z", by = .EACHI]
运行上述代码,z
列中的列表将保持不变,并且会根据x
和y
进行分组。