我有這樣一個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))' –