我从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
如何正确创建此数据框?
答案 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
})