Plus de robustesse, plus de sécurité, nous avons nommé bind_rows et bind_cols !

Package du tidyverse, {dplyr} regorge d’outils ultra efficaces pour la manipulation de données. Parmi eux, deux petites fonctions qui, à première vue, ne payent pas de mine… et pourtant. bind_rows et bind_cols vous permettent d’effectuer l’équivalent de rbind et cbind mais sont plus fonctionnelles, et affichent des résultats plus propres et exploitables.

Commençons par créer deux tableaux. Si nous tentons de les juxtaposer avec la fonction de base rbind, nous aurons une erreur. À l’inverse, bind_rows fera le job, en peuplant les « colonnes manquantes » par des NA.


  library(dplyr)
  df1 <- data.frame(a = LETTERS,
                    b = LETTERS)
  df2 <- data.frame(c = LETTERS,
                    d = LETTERS)
  bind(df1, df2)
    Error in match.names(clabs, names(xi)) :
      les noms ne correspondent pas aux noms précédents
  bind_rows(df1, df2)

Au tour de bind_cols. Pas de soucis dans nos deux exemples du dessus, en base ou avec la fonction de {dplyr}. Testons avec deux nouveaux tableaux.


  df3 <- data.frame(a = LETTERS[1:2],
                    b = LETTERS[1:2])
  df4 <- data.frame(a = LETTERS[1:2],
                    b = LETTERS[1:2])
  cbind(df3, df4)
    a b a b
  1 A A A A
  2 B B B B
  bind_cols(df3, df4)
    a b a1 b1
  1 A A  A  A
  2 B B  B  B

Le réel plus de bind_cols ici ? La gestion des noms de colonne : alors que la fonction de {base} duplique les noms, la fonction de {dplyr} ajoute un chiffre, afin d’éviter le souci des colonnes dupliquées, qui pourront plus tard mettre en péril une analyse.