如何从R中的嵌套列表中提取元素

如何从R中的嵌套列表中提取元素,r,tidyverse,nested-lists,R,Tidyverse,Nested Lists,我正在处理json数据,我已经将其转换为带有一些列表列的TIBLE。我试图从列表列中提取有用的信息,但我面临一些问题。如果给定以下数据集- mydf <-tibble( x = c(1, 2, 3), y = list(list(list(id="id1", title="title1"), list(id="id11", title="title11")), list(id="id2",title="title2"), NULL)

我正在处理json数据,我已经将其转换为带有一些列表列的TIBLE。我试图从列表列中提取有用的信息,但我面临一些问题。如果给定以下数据集-

mydf <-tibble( 
  x = c(1, 2, 3),
  y = list(list(list(id="id1", title="title1"), list(id="id11", title="title11")), 
           list(id="id2",title="title2"), 
           NULL)
)

感谢您的帮助。谢谢

我认为有更好的方法,但这是我现在能做的。对于每一行,我提取字符串并用
toString()
连接它们。由于
unnest()
为每一行(即x中的1、2和3)创建多行,因此我使用
summary()
临时组合字符串。然后,我使用
separate()
将它们分开

mydf%>%
unnest(y,keep_empty=TRUE)%%>%
行%>%
突变(y=toString(未列出(y)))%>%
分组依据(x)%>%
汇总(字符串=粘贴(y,collapse=“”))%>%
分离(col=string,into=c(“id”,“title”),sep=“389;”)
#x id标题
#                  
#第11条id1,第1条id11,第11条
#2 id2标题2
#3英寸不适用

如果名称与示例中的一致,则可以执行以下操作:

mydf2 <- unlist(mydf)
x <- mydf2[grepl("x", names(mydf2))]
id <- mydf2[grepl("id", names(mydf2))]
title <- mydf2[grepl("title", names(mydf2))]
tibble(x, id, title)
mydf2
mydf %>% 
unnest(y, keep_empty = TRUE) %>% 
rowwise %>% 
mutate(y = toString(unlist(y))) %>%
group_by(x) %>% 
summarize(string = paste(y, collapse = "_")) %>% 
separate(col = string, into = c("id", "title"), sep = "_")

#      x id          title        
#  <dbl> <chr>       <chr>        
#1     1 id1, title1 id11, title11
#2     2 id2         title2       
#3     3 ""          NA           
mydf2 <- unlist(mydf)
x <- mydf2[grepl("x", names(mydf2))]
id <- mydf2[grepl("id", names(mydf2))]
title <- mydf2[grepl("title", names(mydf2))]
tibble(x, id, title)
# A tibble: 3 x 3
  x     id    title  
  <chr> <chr> <chr>  
1 1     id1   title1 
2 2     id11  title11
3 3     id2   title2