合并在两个不同列表

时间:2017-05-16 19:29:04

标签: r

我有两个大的数据帧列表,需要将dfList1的第一个数据帧与第二个dfList2的第一个数据帧合并,依此类推。有没有更优雅,也许更有效的方法来做到这一点而不是循环遍历列表?

dfList1 <- list(df11, df12,..., df1N)
dfList2 <- list(df21, df22,..., df2N)
dfList3 <- list()
for (i in c(1:N){
    dfList3[[i]] <- merge(dfList1[[i]], dfList2[[i]], by=1)
}

两个列表中的数据框架结构不同,这意味着我不能使用类似的东西:

dfList3 <- lapply(names(dfList1), function(x) cbind(dfList1[[x]], dfList2[[x]])

P.S。:我无法找到任何有关此问题的帖子。如果您发现了什么,请提供评论链接。

1 个答案:

答案 0 :(得分:2)

您可以使用map2中的purrr。您可以使用基础mapply完成相同的功能,但我认为map2语法更加友好。

使用map2

my_list  <- list(iris, iris)
my_list2 <- list(iris, iris)
out <- purrr::map2(my_list, my_list2, merge, by="Species")

使用mapply

out2 <- mapply(merge, my_list, my_list2, MoreArgs = list(by="Species"), SIMPLIFY = F)

identical(out,out2)
[1] TRUE