【发布时间】:2018-07-14 11:03:22
【问题描述】:
我有一个希望转换为数据框(特别是小标题)的子列表列表;例如:
myList <- list(
list(var1=1,var2=2,var3=3,var4=4,var5=5,var6=6),
list(var1=4,var2=5,var3=6,var4=7,var5=8,var6=9),
list(var1=7,var2=8,var3=9,var4=1,var5=2,var6=3)
)
使用以下代码,我可以将选定的变量提取到 tibble 数据框
myDF <- tbl_df(cbind(
var1 = lapply(myList, '[[', "var1"),
var2 = lapply(myList, '[[', "var2"),
var5 = lapply(myList, '[[', "var5"),
var6 = lapply(myList, '[[', "var6")
))
但它非常冗长。有没有更简洁的方法(可能使用 purrr 映射函数)可以将选定的子元素从每个列表中拉出并将它们填充到一行中?
此外,如果子列表本身包含列表,如何最好地提取这些列表的元素;例如:
myList <- list(
list(var1=1,var2=2,var3=3,list4=list(varA="a",varB="b")),
list(var1=4,var2=5,var3=6,list4=list(varA="c",varB="d")),
list(var1=7,var2=8,var3=9,list4=list(varA="e",varB="f"))
)
我怎样才能得到类似以下的工作:
myDF <- tbl_df(cbind(
var1 = lapply(myList, '[[', "var1"),
var2 = lapply(myList, '[[', "var2"),
var4 = lapply(myList, '[[', "list4$varA")
))
我想从列表 4 中提取特定元素,但使用 $ 表示法向下钻取到下一个级别不起作用?
【问题讨论】: