首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的高性能大数据操作

R中的高性能大数据操作
EN

Stack Overflow用户
提问于 2012-12-18 09:37:00
回答 1查看 319关注 0票数 5

我正在处理一个列表集合,这些列表包含深度嵌套的列表,除了以下事实之外,没有固定的结构:

  1. 第1级的列表有一个名为variations的元素
  2. 层次结构中的所有叶数据都是数字数据。

例如:

代码语言:javascript
复制
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)数据格式

代码语言:javascript
复制
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将创建的长名称以提取variationvariable值而不生成太多中间值的好方法是什么?

不管unlist是否正确,我都想知道:

  • 是否最好构建单独的variationvariablevalue向量或矩阵,然后将它们组合成一个数据帧,而不是逐行构建数据帧?
  • 我是否应该使用另一种更快的数据结构来处理这类数据?无论我最后使用的是什么,都需要转换为数据格式,以便与plyrreshapeggplot一起使用。
EN

回答 1

Stack Overflow用户

发布于 2012-12-18 10:42:50

有一个函数似乎不太被使用,叫做rapply,它递归地对列表进行操作。我不知道它的速度有多快(基于lapply,所以可能并不可怕,但并不令人惊奇),而且使用起来也很棘手。但还是值得考虑的,如果只是因为优雅。

以下是其使用的一个基本示例:

代码语言:javascript
复制
> rapply( test, classes="numeric", how="unlist", f=function(var) data.frame(names(var),var) )
      variations.12.x.names.var.              variations.12.x.var       variations.3.x.names.var.1       variations.3.x.names.var.2              variations.3.x.var1 
                             "a"                              "1"                              "a"                              "b"                              "6" 
             variations.3.x.var2     variations.abcd.x.names.var.            variations.abcd.x.var variations.abcd.m.n.o.names.var.        variations.abcd.m.n.o.var 
                             "4"                              "b"                              "1"                              "p"                           "1023" 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13930010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档