Fusionner des listes de data frames

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Nicolas Romillac
Messages : 30
Enregistré le : 07 Jan 2020, 13:53

Fusionner des listes de data frames

Messagepar Nicolas Romillac » 07 Oct 2022, 22:12

Bonjour à tous,
encore une question de manipulation d'objets:

Je possède deux listes de dataframes (ls1 et ls2), dont les éléments possèdent des noms identiques.
Autrement dit:
ls1 contient:
$df1
$df2
$df3

ls2 contient aussi:
$df1
$df2
$df3

(les valeurs contenues dans ls1$df1 étant bien entendue différentes des valeurs contenues dans ls2$df1)

Je voudrai fusionner les deux listes, en concatenant les df par ligne, de manière à n'avoir qu'un seul dataframe pour chaque nom (comme si je faisais rbind(ls1$df1,ls2$df1), mais généralisé à toute la liste...)

Merci d'avance!

Facundo Muñoz
Messages : 156
Enregistré le : 04 Juil 2019, 09:58
Contact :

Re: Fusionner des listes de data frames

Messagepar Facundo Muñoz » 08 Oct 2022, 10:50

Bonjour,

je vous propose 2 solutions, selon si vous pouvez compter sur un ordre cohérent entre les 2 listes, ou non.

Code : Tout sélectionner

ls1 <- list(
  df1 = data.frame(x = 1.1),
  df2 = data.frame(x = 1.2),
  df3 = data.frame(x = 1.3)
)

ls2 <- list(
  df1 = data.frame(x = 2.1),
  df2 = data.frame(x = 2.2),
  df3 = data.frame(x = 2.3)
)

## Basé sur l'ordre des éléments
res_ord <- mapply(rbind, ls1, ls2, SIMPLIFY = FALSE)

## Basé sur le nom des éléments
res_nom <- lapply(
  setNames(nm = names(ls1)),
  \(.) rbind(ls1[[.]], ls2[[.]])
)


identical(res_ord, res_nom)
#> [1] TRUE
ƒacu.-

Nicolas Romillac
Messages : 30
Enregistré le : 07 Jan 2020, 13:53

Re: Fusionner des listes de data frames

Messagepar Nicolas Romillac » 08 Oct 2022, 11:42

Merci beaucoup!


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité