Eliminare la colonna dell'elenco nidificato in data.table. Supponendo che tutti gli elementi dell'elenco siano dello stesso tipo. Gli elementi della lista sono nominati, il nome deve essere gestito anche.
È un'operazione in qualche modo opposta a data.table aggregation to list column.
Penso valga la pena averlo nella knowledge base SO data.table.
Il mio attuale approccio al workaround, sto cercando una risposta un po 'più canonica.Eliminare le colonne dell'elenco nidificato in data.table
library(data.table)
dt <- data.table(
a = letters[1:3],
l = list(list(c1=6L, c2=4L), list(x=2L, y=4L, z=3L), list())
)
dt[]
# a l
# 1: a <list>
# 2: b <list>
# 3: c <list>
dt[,.(a = rep(a,length(l)),
nm = names(unlist(l)),
ul = unlist(l)),
.(id = seq_along(a))
][, id := NULL
][]
# a nm ul
# 1: a c1 6
# 2: a c2 4
# 3: b x 2
# 4: b y 4
# 5: b z 3
# 6: c NA NA
non puoi semplicemente fare 'dt [, (nm = nomi (non elencati (l)), ul = non elencati (l)), da = a.]'? –
L'ultima riga, che ha una lista vuota, non è gestita in questo modo. – jangorecki
@jangorecki, anche le liste vuote sono sempre senza nome? – A5C1D2H2I1M1N2O1R2T1