我有大量的列表,每个列表都包含许多子列表.每个列表都包含一个子列表,其中每个子列表在不同列表中具有相同的名称和观察数量.
这是一个简单的数据示例:
score <- list(Bob = list(c('1'), ('0')), Jane = list(c('1'), ('2'), ('4'), ('2')))
comments <- list(Bob = list(c('AAA'), ('BBB')), Jane = list(c('ZZZ'), ('XXX'), ('YYY'), ('QQQ')))
Run Code Online (Sandbox Code Playgroud)
我希望创建一个数据框列表,将子列表组合在一起并保留名称.
my.list.Bob
score comments
1 AAA
0 BBB
my.list.Jane
score comments
1 ZZZ
2 XXX
4 YYY
2 QQQ
Run Code Online (Sandbox Code Playgroud)
这是适合您的一种方法。如果您的全局环境中有所有列表,则可以执行以下操作。首先,您创建一个包含您拥有的所有列表的列表。然后,您可以使用transpose()它为每个人创建一个列表(例如,包含分数和评论的 Bob 列表)。在本例中,每个列表中的评论和分数都是嵌套列表。您想要在每个列表中取消列出它们。因此,您可以使用rapply2()rawr。最后,您为每个列表创建一个数据框。
library(magrittr)
library(purrr)
library(rawr) #devtools::install_github('raredd/rawr')
score <- list(Bob = list(c('1'), ('0')), Jane = list(c('1'), ('2'), ('4'), ('2')))
comments <- list(Bob = list(c('AAA'), ('BBB')), Jane = list(c('ZZZ'), ('XXX'), ('YYY'), ('QQQ')))
# Get all objects in the global environment and create a list.
mylist <- mget(ls(pattern = ".*"))
purrr::transpose(mylist) %>%
rapply2(unlist, classes = "list") %>%
lapply(as.data.frame, stringsAsFactors = FALSE)
$Bob
comments score
1 AAA 1
2 BBB 0
$Jane
comments score
1 ZZZ 1
2 XXX 2
3 YYY 4
4 QQQ 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |