将数据帧连接到两个单独的列表中R.

时间:2015-11-03 16:44:58

标签: r list dataframe inner-join

我有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")等等。

我想知道是否有办法在一行中加入所有六个,而不必为列表中的每个元素重复。

1 个答案:

答案 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))