R-列表中的DataFrame而不展开一些列

时间:2019-02-07 19:06:01

标签: 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

如何正确创建此数据框?

1 个答案:

答案 0 :(得分:1)

为便于映射和联接data.frame,我们可以在此处使用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
})