У меня есть list
из data.frame
с. Некоторые из data.frame
являются избыточными, и среди не избыточных строки (обозначенные столбцом id
) не идентичны, но перекрываются:
set.seed(2)
ids.1.2 <- paste0("id",sample(30,10,replace = F))
ids.3.4 <- paste0("id",sample(30,20,replace = F))
df.1 <- data.frame(id = ids.1.2,matrix(rnorm(100),10,10,dimnames = list(NULL,paste0("s.1.2:",1:10))))
df.2 <- df.1
df.3 <- data.frame(id = ids.3.4,matrix(rnorm(300),20,15,dimnames = list(NULL,paste0("s.3.4:",1:15))))
df.4 <- df.3
df.list <- list(df.1, df.2, df.3, df.4)
Таким образом, в этом случае df.1
и df.2
идентичны, равно как и df.3
и df.4
, и оба набора пересекаются на id
s:
"id6" "id21" "id17" "id5" "id24" "id11" "id12
Существует ли purrr::reduce
или аналогичный способ объединить этот список в один data.frame
с уникальными столбцами и пересекающимися id
х?
Я бы использовал:
purrr::reduce(df.list, dplyr::inner_join,by = "id")
Если все data.frame
имеют уникальные столбцы. Но в моем случае использование этого добавляет .x
, .y
, ... достаточно к избыточным столбцам.