如何从R中的嵌套列表中提取元素
我正在处理json数据,我已经将其转换为带有一些列表列的TIBLE。我试图从列表列中提取有用的信息,但我面临一些问题。如果给定以下数据集-如何从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)
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