考虑一个嵌套列表,其中的数据基本上是矩形的。
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
以原始列表格式获取此数据的最佳解决方案是什么?我在考虑使用.
作为每个级别的分隔符,但我不确定如何在实践中这样做。
由于
答案 0 :(得分:3)
一个选项是relist
(假设这些列都是class
},而不是&#39; myDf&#39;
newlst <- relist(unlist(myDf), skeleton = mylst1)
identical(mylst1, newlst)
#[1] TRUE