我正在处理一组列表,其中包含深度嵌套的列表,除了以下事实之外没有固定结构:
- 级别 1 的列表有一个元素,称为
variations
- 层次结构中的所有叶数据都是数字的。
例如:
list(
list(variations = list(
'12' = list(x = c(a = 1))
)),
list(variations = list(
'3' = list(x = c(a = 6, b = 4)),
'abcd' = list(x = c(b = 1), m = list(n = list(o = c(p = 1023))))
))
)
我需要将列表数据结构转换为reshape
表格的熔化(每个)数据框
data.frame(
variation = c( '12', '3', '3', 'abcd', 'abcd'),
variable = c('x.a', 'x.a', 'x.b', 'x.b', 'm.n.o.p'),
value = c( 1, 6, 4, 1, 1023)
)
或其他我可以执行快速分组和过滤的数据结构。
数据结构中有数百万个节点。该集合可以有数千个条目,每个条目都有数万个变体,其中包含 2-10+ 个名称未知的叶节点。
我正在寻找有关如何以快速方式从集合中构建数据框的建议。
一种方法是unlist
在源数据上使用以展平列表,但我不确定以下内容:
我应该
unlist
在整个数据结构上运行,它将叶数字节点转换为字符串(然后我需要将其解析回数字)还是应该unlist
在每个变体上使用(这将使数字叶节点保持完整)?什么是解析
unlist
将创建以提取variation
和variable
值的长名称而不生成太多中间值的好方法?
不管是否unlist
是正确的方法,我想知道:
构建单独
variation
的 ,variable
和value
向量或矩阵然后将它们组合成一个数据框而不是逐行构建数据框更好吗?我不应该使用数据帧,而是使用另一种更快的数据结构来处理此类数据吗?无论我最终使用什么,都需要可转换为数据帧以用于
plyr
,reshape
和ggplot
.