gpt4 book ai didi

r - 将多个列表元素转换为单独的 data.frame 列

转载 作者:行者123 更新时间:2023-12-03 10:10:21 25 4
gpt4 key购买 nike

我正在尝试将列表从 api 的 json 数据转换为 data.frame。使用 fromJSON ,我得到一个嵌套列表结构,我需要在其他一些数据框上加入这些数据。

因此,该列表是多维的(嵌套的)。我一直在尝试将多个元素转换为 data.frame 中的单独列,因为要与其他框架的结构匹配并进行连接。我相信有一种优雅的方法可以做到这一点,但我似乎没有找到。在最坏的情况下,我可能最终会使用 环形。

任何帮助,将不胜感激!!!!

这是创建列表的示例数据:

mylist <- list(structure(list(
categoryName = "cat1",
parent_categories = "parent1",
url = "/xyx.com/bca/"),

.Names = c("categoryName", "parent_categories", "url")),

structure(list(
categoryName = "cat2",
parent_categories = c("parent2", "parent3", "parent4"),
url = "/abc.com/bca"),

.Names = c("categoryName", "parent_categories", "url"))
)

我想要的输出应该是这样的
  categoryName parent_categories_1 parent_categories_2 parent_categories_3  url
1 cat1 parent1 NA NA /xyx.com/bca/
2 cat2 parent2 parent3 parent4 /abc.com/bca

下面是我使用但没有得到想要的结果,虽然它非常接近
ldply(mylist, function(x){ data.frame(x) })

**MY CURRENT OUTPUT**

categoryName parent_categories url
1 cat1 parent1 /xyx.com/bca/
2 cat2 parent2 /abc.com/bca
3 cat2 parent3 /abc.com/bca
4 cat2 parent4 /abc.com/bca

最佳答案

这是一种方法,但我相信有更好的方法:

mylist2 <- lapply(lapply(mylist, unlist), function(x) {
names(x)[names(x) == "parent_categories"] <- "parent_categories1"
data.frame(t(x))
})

library(plyr)
rbind.fill(mylist2)

## categoryName parent_categories1 url parent_categories2 parent_categories3
## 1 cat1 parent1 /xyx.com/bca/ <NA> <NA>
## 2 cat2 parent2 /abc.com/bca parent3 parent4

解释:
  • unlist每个嵌套列表转换为向量列表
  • 对于只有一个父类别的人,我将“parent_categories”重命名为“parent_categories1”
  • 我用 plyrrbind.fill拼接起来

  • 您可以使用多种方法来重新排列列顺序,但这相当简单。

    关于r - 将多个列表元素转换为单独的 data.frame 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18496699/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com