嵌套列表到数据框并返回到嵌套列表

时间:2017-08-14 15:13:32

标签: r dataframe nested-lists

考虑一个嵌套列表,其中的数据基本上是矩形的。

mylst1 <- list(
  "system" = list(
    "subjectId" = c(101,102,103),
    "procedureId" = c(202,202,203)
  ),
  "demographics" = list(
    "demo_age" = c(12,22,32),
    "demo_gender" = c(1,0,1)
  ),
  "items" = list(
    "N" = list(
      "n001" = c(1,2,3),
      "n002" = c(3,2,1)
      ),
    "E" = list(
      "e001" = c(1,2,3),
      "e002" = c(3,2,1)
    )
  )
)

由于嵌套列表很难处理,所以让我们创建一个数据框: myDf <- data.frame(mylst1)

到目前为止一切顺利,现在我可以在myDf上执行所有操作了。我们假设我刚刚过滤了一些观察结果。问题是我需要返回我想要发送此数据的Web应用程序所需的相同嵌套列表结构,但现在数据当然如下所示:

> str(myDf)    
'data.frame':   3 obs. of  8 variables:
     $ system.subjectId        : num  101 102 103
     $ system.procedureId      : num  202 202 203
     $ demographics.demo_age   : num  12 22 32
     $ demographics.demo_gender: num  1 0 1
     $ items.N.n001            : num  1 2 3
     $ items.N.n002            : num  3 2 1
     $ items.E.e001            : num  1 2 3
     $ items.E.e002            : num  3 2 1

以原始列表格式获取此数据的最佳解决方案是什么?我在考虑使用.作为每个级别的分隔符,但我不确定如何在实践中这样做。

由于

1 个答案:

答案 0 :(得分:3)

一个选项是relist(假设这些列都是class},而不是&#39; myDf&#39;

newlst <- relist(unlist(myDf), skeleton = mylst1)
identical(mylst1, newlst)
#[1] TRUE