[英]R repetitive subset of lists nested within multiple lists
我有一个以.xlsx格式提供给我的数据集,其中包含多个工作簿,其中包含多个工作表,这些工作表具有相同的名称,并且这些工作表中的数据列相似。 我最终希望以相同的名称加入数据表并进行一些分析。
由于多年以来工作簿中都有大量数据,因此我想有效地合并数据和格式,进行分析等工作。我是列表的新手,但已成功读取数据,但在子设置和绑定上遇到了麻烦。 我已经制作了以下虚拟数据和脚本:
#tlm2009
b1<-c('a', 'b', 'c')
b2<- c(4, 2, 3)
hab<-data.frame(b1,b2)
c1<-c('a', 'b', 'c', 'd')
c2<- c(1, 2, 3, 4)
raw<-data.frame(c1,c2)
tlm2009<-list(hab,raw)
#tlm2010
b1<-c('a', 'b', 'c','d')
b2<- c(1, 2, 3, 4)
hab<-data.frame(b1,b2)
c1<-c('a', 'b', 'c', 'd', "e")
c2<- c(1, 2, 3, 4, 5)
raw<-data.frame(c1,c2)
tlm2010<-list(hab,raw)
my.list<-list(tlm2009,tlm2010)
然后,我运行以下代码来提取“ hab”和/或“ raw”,但它不起作用
library(tidyverse)
unlist(my.list) %>%
data.frame(val = .) %>%
filter(str_detect(id, "(hab|raw)"))
和
library(purrr)
map(transpose(my.list),~map_dfc(.x,"hab"))
并为移调得到以下错误:
转置错误(my.list):列表输入的项目1不是原子向量
因此,我希望所有“ habs”子集都已加入,但我还没有真正考虑过加入,因为还没有解决这个子集。 任何帮助,将不胜感激。
也许您正在寻找这样的东西
Map(rbind, my.list[[1]], my.list[[2]])
#[[1]]
# b1 b2
#1 a 4
#2 b 2
#3 c 3
#4 a 1
#5 b 2
#6 c 3
#7 d 4
#[[2]]
# c1 c2
#1 a 1
#2 b 2
#3 c 3
#4 d 4
#5 a 1
#6 b 2
#7 c 3
#8 d 4
#9 e 5
这会自动将您hab
和raw
通过数据集中在一起,在一个列表rbind
荷兰国际集团他们。
通常的选择是将do.call
与Map
一起使用。 也可以是多个长度的list
do.call(Map, c(f = rbind, my.list))
#[[1]]
# b1 b2
#1 a 4
#2 b 2
#3 c 3
#4 a 1
#5 b 2
#6 c 3
#7 d 4
#[[2]]
# c1 c2
#1 a 1
#2 b 2
#3 c 3
#4 d 4
#5 a 1
#6 b 2
#7 c 3
#8 d 4
#9 e 5
或使用tidyverse
library(tidyverse)
pmap(my.list, bind_rows)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.