基于R中的数据帧名称合并存储在不同长度列表中的数据帧

基于R中的数据帧名称合并存储在不同长度列表中的数据帧,r,R,我有以下两个清单: A_1 <- data.frame(col1 = 1:5, col2 = rnorm(5)) A_2 <- data.frame(col1 = 1:5, col2 = rnorm(5)) B_1 <- data.frame(col1 = 1:5, col2 = rnorm(5)) B_2 <- data.frame(col1 = 1:5, col2 = rnorm(5)) B_3 <- data.frame(col1 = 1:5, col2 =

我有以下两个清单:

A_1 <- data.frame(col1 = 1:5, col2 = rnorm(5))
A_2 <- data.frame(col1 = 1:5, col2 = rnorm(5))
B_1 <- data.frame(col1 = 1:5, col2 = rnorm(5))
B_2 <- data.frame(col1 = 1:5, col2 = rnorm(5))
B_3 <- data.frame(col1 = 1:5, col2 = rnorm(5))
C_1 <- data.frame(col1 = 1:5, col2 = rnorm(5))
list1 <- list(A_1 = A_1, A_2 = A_2, B_1 = B_1, B_2 = B_2, B_3 = B_3, C_1 = C_1)
A <- data.frame(col1 = 1:5, col3 = LETTERS[1:5])
B <- data.frame(col1 = 1:5, col3 = LETTERS[6:10])
C <- data.frame(col1 = 1:5, col3 = LETTERS[11:15])
list2 <- list(A = A, B = B, C = C)

我该怎么做?谢谢大家!

匹配
列表名称,然后使用
映射
循环,以
合并
每个列表中的相应数据集:

m <- match(substr(names(list1),1,1), names(list2))
Map(merge, list1, list2[m], by="col1")

合并两个包含小数据帧的大数据帧,然后在生成的大数据帧内合并小数据帧,怎么样?()当然,@thelatemail答案更优雅、更高效,但我只是认为这是一个很好的例子来说明tidyverse的功能

我们首先定义两个大数据帧,其中包含
list1
list2
中的数据帧

库(dplyr)
图书馆(purrr)
bigdf1%
变异(name2=substr(name1,1,1))
bigdf1
#>#tibble:6 x 3
#>名称1 df1名称2
#>         
#>1 A_1 A
#>2 A_2 A
#>3 B_1 B
#>4 B_2 B
#>5 B_3 B
#>6c_1c
bigdf2#A tible:3 x 2
#>名称2 df2
#>        
#>1A
#>2 B
#>3 C
然后我们通过
name2
将它们合并,然后在内部合并小数据帧

bigdf%
变异(df_res=map2(df1,df2,left_join,by=“col1”))%>%
变异(df_res=设置_名称(df_res,名称1))
bigdf
#>#tibble:6 x 5
#>名称1 df1名称2 df2 DFU res
#>                               
#>1 A_1 A
#>2 A_2 A
#>3 B_1 B
#>4 B_2 B
#>5 B_3 B
#>6c_1c
那么我们需要的就是
bigdf$df_res

m <- match(substr(names(list1),1,1), names(list2))
Map(merge, list1, list2[m], by="col1")
map2(list1, list2[m], left_join)