Ald*_*eja 3 r vectorization data.table
我有一个像这样的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
Run Code Online (Sandbox Code Playgroud)
我需要每行中的元素只是该行中元素之间的集合差异以及该行之前集合的所有元素的联合.这样我会得到类似的东西:
   freq elements
1:    4    a,b,c
2:    3        d
3:    2       NA
4:    1        e
Run Code Online (Sandbox Code Playgroud)
我可以用一个用于组合所有元素直到i-1并且仅获得设置差异但我真的想知道如何以矢量化方式进行,如果可能的话.
感谢你们!
假设你打算在你的最后一行中有一个'e' dt,这freq是唯一的(如果没有,创建一个唯一的索引,或使用行):
dt[, .(els = elements[[1]]), by = freq][
   , .(freq = freq[1]), by = els][
   , .(filtered = list(els)), by = freq][
   dt, on = 'freq']
#   freq filtered elements
#1:    4    a,b,c    a,b,c
#2:    3        d      a,d
#3:    2     NULL      b,d
#4:    1        e    b,d,e
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           81 次  |  
        
|   最近记录:  |