我有2个列表,每个包含6个数据帧。
listofdf_1 <- list(a, b, c, d, e, f)
listofdf_2 <- list(a2, b2, c2, d2, e2, f2)
我希望inner_join
数据框a与a2,b与b2,c与c2等
连接列为:ID1
我写了一个函数:
merge_on_id <- function(x, y, join_field) {
require(dplyr)
inner_join(x, y, by = join_field)
}
现在我一个接一个地加入:merge_on_id(listofdf_1[[1]], listofdf_2[[1]], by = "ID1")
等等。
我想知道是否有办法在一行中加入所有六个,而不必为列表中的每个元素重复。
答案 0 :(得分:1)
如果我们需要inner_join
lists
的相应元素,我们可以使用Map
。
Map(inner_join, listofdf_1, listofdf_2, MoreArgs=list(by='ID1'))
listofdf_1 <- list(a= data.frame(ID1= LETTERS[1:3], Value= 1:3, stringsAsFactors=FALSE),
b = data.frame(ID1= LETTERS[4:7], V1= 4:7, stringsAsFactors=FALSE))
listofdf_2 <- list(a2= data.frame(ID1= LETTERS[1:5], Value= 6:10, stringsAsFactors=FALSE),
b2 = data.frame(ID1= LETTERS[4:9], V1= 4:9, stringsAsFactors=FALSE))