我有下面的示例结构的列表:拼合列表具有复杂嵌套结构
> 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
注意,section2
列表包含名为rows
元件。这些代表多个记录。我所拥有的是嵌套列表,其中一些元素位于根级,而其他元素是同一观察值的多个嵌套记录。我想在一个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
根级元素应该填充在第一行,而row
元素应该有自己的行。作为一个附加的复杂因素,row
条目中的变量数量可能会有所不同。
为什么你想要这个所需的输出?这似乎是一个不方便的数据格式。 – A5C1D2H2I1M1N2O1R2T1 2015-01-28 17:52:51
我正在执行一个soap请求,它返回一个嵌套列表中嵌套结构的html表。我不知道为什么你认为所需的输出不方便。它以data.frame格式重新创建html表格,并在条目跨越多行时填充NA值。 – Zelazny7 2015-01-28 18:46:04
您是否可以提供一个或两个以上的测试用例,因为您已经为此添加了一个赏金。你提到你正在寻找一个“通用”解决方案,所以很有可能知道应该考虑哪些场景。 – A5C1D2H2I1M1N2O1R2T1 2015-02-01 04:22:33