【发布时间】:2015-03-25 08:15:20
【问题描述】:
我有一个具有以下示例结构的列表:
> 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 条目中的变量数量可能会有所不同。
【问题讨论】:
-
你为什么想要这个想要的输出?这似乎是一种不方便使用的数据格式。
-
我正在执行一个soap请求,它返回一个在嵌套列表中具有非常嵌套结构的html表。我不确定您为什么认为所需的输出不方便。它以 data.frame 格式重新创建 html 表,并在条目跨越多行时填充 NA 值。
-
您是否可以再提供一两个测试用例,因为您已经为此添加了赏金。您提到您正在寻找“通用”解决方案,因此最好了解应该考虑哪些其他场景。