我正在介绍data.table
插图 g)为什么让j保持灵活?显示一个与我的用例相关的示例:
DT[, .(val = list(c(a,b))), by = ID]
# ID val
# 1: b 1,2,3,7,8,9
# 2: a 4, 5,10,11
# 3: c 6,12
我有一个最小的工作示例来说明问题
set.seed(1234)
size <- 10
ordering_ids <- rep(1:size, sample(1:size, replace=TRUE))
products <- letters[seq_along(ordering_ids)]
k <- data.table(o=ordering_ids, p=products)
对于size <- 10
,很可能某些条目会导致NA
,但这不是问题。问题是,超过某个size
(大约6),我会丢失连接列表中的条目:
k
# o p
# 1: 1 a
# 2: 1 b
# 3: 2 c
# 4: 2 d
# 5: 2 e
# 6: 2 f
# 7: 2 g
# 8: 2 h
# 9: 2 i
# 10: 3 j
# 11: 3 k
# 12: 3 l
# 13: 3 m
# 14: 3 n
# 15: 3 o
# 16: 3 p
# 17: 4 q
# 18: 4 r
# [...]
从小插图运行相同的命令:
k[o<=4, .(val=list(c(p))), by=o]
# o val
# 1: 1 a,b
# 2: 2 c,d,e,f,g,h,
# 3: 3 j,k,l,m,n,o,
# 4: 4 q,r,s,t,u,v,
现在,对于订单o=3
,val
列表不包含所有条目(请参阅k
打印输出,它应该到r
)。
这里有什么问题,我该如何解决?
答案 0 :(得分:1)
感谢您指出这一点;现在,非原子列的默认打印行为在截断时将包含...
作为后缀。
您的示例(set.seed(1234)
现在将产生以下结果):
k[o<=4, .(val=list(c(p))), by=o]
# o val
# 1: 1 a,b
# 2: 2 c,d,e,f,g,h,...
# 3: 3 j,k,l,m,n,o,...
# 4: 4 q,r,s,t,u,v,...