gpt4 book ai didi

r - 嵌套列表到数据框

转载 作者:行者123 更新时间:2023-12-04 10:37:50 24 4
gpt4 key购买 nike

从嵌套列表创建数据框

经过一些迭代,我创建了一组具有以下架构的嵌套列表(用于数千种产品)

My_list <- list()
My_list$'product1' <- list()
My_list$'product1'[[1]] <- list()
My_list$'product1'[[2]] <- list()
My_list$'product2' <- list()
My_list$'product2'[[1]] <- list()
My_list$'product2'[[2]] <- list()

My_list$'product1'[[1]]$A <- 1
My_list$'product1'[[1]]$B <- 2
My_list$'product1'[[2]]$A <- 3
My_list$'product1'[[2]]$B <- 4
My_list$'product2'[[1]]$A <- 5
My_list$'product2'[[1]]$B <- 6

我想将其转换为具有以下结构的数据框
data.frame(sku=c("product1","product1","product2"),Item=c("1","2","1"),A=c(1,3,5), B=c(2,4,6))

最佳答案

这是 unnest_wider 的一种选择

library(tidyr)
library(dplyr)
library(tibble)
library(data.table)
enframe(My_list, name = "sku") %>%
unnest(c(value)) %>%
unnest_wider(c(value)) %>%
na.omit %>%
mutate(Item = rowid(sku))
# A tibble: 3 x 4
# sku A B Item
# <chr> <dbl> <dbl> <int>
#1 product1 1 2 1
#2 product1 3 4 2
#3 product2 5 6 1

或与 base R
lst1 <- lapply(My_list,  function(x) do.call(rbind,  lapply(x, as.data.frame)))
do.call(rbind, Map(cbind, sku = names(lst1), lst1))

关于r - 嵌套列表到数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60084183/

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