r - 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
我怎样才能正确创建这个数据框?
解决方案
为了便于映射和加入 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
})