我有这样一个data.table:矢量化:如何才能在向量矢量中只有所有元素集合的集合差异?
dt=data.table(freq=c(4,3,2,1),elements=list(c('a','b','c'),
c('a','d'),
c('b','d'),
c('b','d','c','e')))
freq elements
1: 4 a,b,c
2: 3 a,d
3: 2 b,d
4: 1 b,d,c,e
我需要每一行中的元素是只有该行的元素和该行之前的集合中的所有元素的关节之间的差集。这样一来,我会得到这样的:
freq elements
1: 4 a,b,c
2: 3 d
3: 2 NA
4: 1 e
我可以与该组中的所有元素做到这一点,直到我-1,只得到差集,但我真的想知道如何做到这一点的矢量化的方式,如果可能的话。
谢谢你们!
你怎么' e'在最后一行? – akrun
另外,如果你有一个非矢量化的解决方案,它是什么? – Justin
也许你可以找到每个元素和累积集合的集合差异?例如。 'Map(setdiff,dt $ elements,head(Reduce(union,dt $ elements,accumulate = TRUE,init = NULL),-1L))' –