Ho una lista con la seguente struttura esempio:Appiattire una lista con complessa struttura annidata
> dput(test)
structure(list(id = 1, var1 = 2, var3 = 4, section1 = structure(list(
var1 = 1, var2 = 2, var3 = 3), .Names = c("var1", "var2",
"var3")), section2 = structure(list(row = structure(list(var1 = 1,
var2 = 2, var3 = 3), .Names = c("var1", "var2", "var3")),
row = structure(list(var1 = 4, var2 = 5, var3 = 6), .Names = c("var1",
"var2", "var3")), row = structure(list(var1 = 7, var2 = 8,
var3 = 9), .Names = c("var1", "var2", "var3"))), .Names = c("row",
"row", "row"))), .Names = c("id", "var1", "var3", "section1",
"section2"))
> str(test)
List of 5
$ id : num 1
$ var1 : num 2
$ var3 : num 4
$ section1:List of 3
..$ var1: num 1
..$ var2: num 2
..$ var3: num 3
$ section2:List of 3
..$ row:List of 3
.. ..$ var1: num 1
.. ..$ var2: num 2
.. ..$ var3: num 3
..$ row:List of 3
.. ..$ var1: num 4
.. ..$ var2: num 5
.. ..$ var3: num 6
..$ row:List of 3
.. ..$ var1: num 7
.. ..$ var2: num 8
.. ..$ var3: num 9
Si noti che l'elenco section2
contiene elementi denominati rows
. Questi rappresentano più record. Quello che ho è un elenco annidato in cui alcuni elementi sono al livello di root e altri sono più record annidati per la stessa osservazione. Desidero il seguente output in un formato data.frame
:
> desired
id var1 var3 section1.var1 section1.var2 section1.var3 section2.var1 section2.var2 section2.var3
1 1 2 4 1 2 3 1 4 7
2 NA NA NA NA NA NA 2 5 8
3 NA NA NA NA NA NA 3 6 9
elementi a livello Root devono popolare la prima fila, mentre row
elementi dovrebbero avere le proprie righe. Come ulteriore complicazione, il numero di variabili nelle voci row
può variare.
Perché vuoi questo output desiderato? Sembra un formato dati scomodo con cui lavorare. – A5C1D2H2I1M1N2O1R2T1
Sto eseguendo una richiesta soap che restituisce una tabella html con una struttura molto annidata in un elenco annidato. Non sono sicuro del motivo per cui pensi che l'output desiderato sia inopportuno. Ricrea la tabella html nel formato data.frame e riempie i valori NA in cui una voce si estende su più righe. – Zelazny7
Puoi fornire uno o due ulteriori casi di test da quando hai aggiunto una taglia a questo.Hai detto che stai cercando una soluzione "generale", quindi sarebbe bene sapere potenzialmente quali altri scenari dovrebbero essere considerati. – A5C1D2H2I1M1N2O1R2T1