mam listę z następującym przykładem struktury:spłaszczania listę ze złożonej struktury zagnieżdżonej
> 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
Zauważ, że lista section2
zawiera elementy nazwie rows
. Reprezentują wiele rekordów. To, co mam, to lista zagnieżdżona, w której niektóre elementy znajdują się na poziomie katalogu głównego, a inne są rekordami zagnieżdżonymi dla tej samej obserwacji. Chciałbym następujące dane wyjściowe w formacie 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
elementy głównej szczebla powinny wypełnić pierwszy wiersz, a row
elementy powinny mieć swoje własne wiersze. Jako dodatkową komplikację liczba zmiennych w pozycjach row
może być różna.
Po co to pożądane wyjście? To wydaje się niewygodnym formatem danych do pracy. – A5C1D2H2I1M1N2O1R2T1
Wykonuję żądanie soap, które zwraca tabelę html z bardzo zagnieżdżoną strukturą na liście zagnieżdżonej. Nie jestem pewien, dlaczego uważasz, że pożądana wydajność jest niewygodna. Odtwarza tabelę html w formacie data.frame i wypełnia wartości NA, w których wpis obejmuje wiele wierszy. – Zelazny7
Czy możesz podać jeden lub dwa dodatkowe przypadki testowe, ponieważ dodałeś do tego nagrodę.Wspomniałeś, że szukasz "ogólnego" rozwiązania, więc dobrze byłoby wiedzieć, jakie inne scenariusze należy uwzględnić. – A5C1D2H2I1M1N2O1R2T1