首页 > 解决方案 > R - List 中的 DataFrame 不展开某些列

问题描述

我有一些从 json 解析的数据,这些数据存储在一个名为json.

每个条目也是一个列表,json[[i]]由两个子列表json[[i]][[1]]和组成json[i]][[2]]

现在,我想通过展开json[[i]][[1]]而不是从这些数据创建一个数据框json[[i]][[2]]。该数据框的列如下:

json[[i]][[1]][[1]]  json[[i]][[1]][[2]] ...  json[[i]][[1]][[n]]  json[[i]][[2]]

例子:

json <- list(list(list(1,2), list(3,4)), list(list(5,6), list(7,8)))

我想要以下数据名:

   X1 X2        X3
1   1  2  list(3,4)
2   5  6  list(7,8)

我尝试了以下方法,但它似乎也解开了第二个列表:

columns <- lapply(json, function(y) {
    list(c(y[[1]][[1]],
           y[[1]][[2]], 
           list(y[[2]])))
})
data.frame(matrix(columns))

输出:

  matrix.columns.
1      1, 2, 3, 4
2      5, 6, 7, 8

我怎样才能正确创建这个数据框?

标签: rlistdataframe

解决方案


为了便于映射和加入 data.frames,我们可以purrr:map_dfr()在这里使用。怎么样

purrr::map_dfr(json, function(x) {
  d <- data.frame(
    X1 = x[[1]][[1]],
    X2 = x[[1]][[2]]
  )
  d$X3 <- x[2]
  d
})

推荐阅读