Renommer des colonnes dans R : dplyr et base R

Renommer une, plusieurs ou toutes les colonnes d’un data frame — deux méthodes qui donnent le même résultat

Renommez les colonnes d’un data frame dans R avec dplyr rename() et rename_with(), ou avec les fonctions base-R names(), colnames() et setNames(). Renommez une seule colonne, plusieurs à la fois, par position, et chaque colonne avec une fonction — les deux moteurs, côte à côte.

Date de publication

26 juin 2026

Modifié

7 juillet 2026

AstucePoints clés
  • dplyr : rename(new_name = old_name) renomme par nom ; listez plusieurs paires pour en renommer plusieurs à la fois.
  • base R : affectez une valeur à names(df) ou colnames(df) — par position (names(df)[2] <- "x") ou en faisant correspondre l’ancien nom.
  • Renommez chaque colonne avec une fonction via rename_with(df, toupper) (dplyr) ou setNames() (base R).
  • Les méthodes dplyr et base-R donnent le même data frame — choisissez celle qui convient à votre flux de travail.
  • L’ordre est toujours new = old dans dplyr ; une source fréquente d’erreurs « object not found ».

Introduction

Vous avez importé un jeu de données et les colonnes s’appellent V1, Sepal.Length ou Cust ID — pénibles à taper, incohérentes ou pleines d’espaces. Renommer les colonnes est la première étape de nettoyage dans presque toutes les analyses.

Il existe deux méthodes, et vous rencontrerez les deux dans le code d’autres personnes :

  • dplyr rename() — concis, se lit comme une phrase, le choix moderne par défaut.
  • base R — affectez les nouveaux noms à names() ou colnames() ; aucun package requis, fonctionne partout.

Cette leçon montre les deux, côte à côte, pour renommer une seule colonne, plusieurs colonnes, toutes les colonnes et par position. Les deux donnent le même résultat — vous pouvez ainsi lire n’importe quel code et choisir la méthode que vous préférez.

Nous utilisons le jeu de données intégré iris. Ses colonnes :

names(iris)
[1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"     

Renommer une seule colonne

dplyr — rename(new = old)

rename() prend le data frame, puis new_name = old_name. Le nouveau nom est à gauche. Ici, nous abrégeons Sepal.Length en sepal_len.

library(dplyr)
iris_renamed <- rename(iris, sepal_len = Sepal.Length)
names(iris_renamed)
[1] "sepal_len"    "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"     

La colonne est renommée ; toutes les autres colonnes restent intactes.

base R — affecter à names()

names(df) renvoie les noms de colonnes sous forme de vecteur de caractères. Affectez une nouvelle valeur à la bonne position pour renommer cette colonne. Sepal.Length est la première colonne, donc l’indice 1 :

iris_renamed <- iris
names(iris_renamed)[1] <- "sepal_len"
names(iris_renamed)
[1] "sepal_len"    "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"     

Compter les positions est fragile — si l’ordre des colonnes change, l’indice 1 renomme la mauvaise colonne. Faites plutôt correspondre par nom, pour que cela fonctionne quelle que soit la place de la colonne :

iris_renamed <- iris
names(iris_renamed)[names(iris_renamed) == "Sepal.Length"] <- "sepal_len"
names(iris_renamed)
[1] "sepal_len"    "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"     

Les deux méthodes produisent le même nom de colonne — rename() est simplement le raccourci lisible du second motif.

Renommer plusieurs colonnes à la fois

dplyr

Listez autant de paires new = old que nécessaire, séparées par des virgules :

library(dplyr)
iris_renamed <- rename(
  iris,
  sepal_len = Sepal.Length,
  sepal_wid = Sepal.Width,
  species   = Species
)
names(iris_renamed)
[1] "sepal_len"    "sepal_wid"    "Petal.Length" "Petal.Width"  "species"     

base R — remplacer tout le vecteur colnames()

colnames(df) est identique à names(df) pour un data frame. Pour renommer toutes les colonnes, affectez un vecteur complet de nouveaux noms — l’ordre doit correspondre à l’ordre actuel des colonnes :

iris_renamed <- iris
colnames(iris_renamed) <- c("sepal_len", "sepal_wid", "petal_len", "petal_wid", "species")
names(iris_renamed)
[1] "sepal_len" "sepal_wid" "petal_len" "petal_wid" "species"  

Utilisez la forme à vecteur complet quand vous renommez tout ; utilisez la forme par correspondance de nom (ci-dessus) quand vous ne voulez modifier que quelques colonnes et laisser les autres inchangées.

Renommer par position

Parfois vous ne connaissez pas l’ancien nom — vous savez seulement « renommer la deuxième colonne ». Indexez dans names() :

iris_renamed <- iris
names(iris_renamed)[2] <- "sepal_width"
names(iris_renamed)
[1] "Sepal.Length" "sepal_width"  "Petal.Length" "Petal.Width"  "Species"     

dplyr peut aussi le faire, avec rename() et la position de colonne enveloppée dans all_of() du nom actuel, mais l’indice base-R est l’outil le plus direct pour renommer par position. Réservez-le aux corrections rapides et interactives — renommer par nom est plus sûr dans les scripts que vous réexécuterez.

Renommer chaque colonne avec une fonction

Pour transformer tous les noms à la fois — les mettre en majuscules, en minuscules, ajouter un préfixe — appliquez une fonction au vecteur de noms.

dplyr — rename_with()

rename_with() applique une fonction aux noms de colonnes. Passez toupper pour mettre chaque nom en majuscules :

library(dplyr)
iris_upper <- rename_with(iris, toupper)
names(iris_upper)
[1] "SEPAL.LENGTH" "SEPAL.WIDTH"  "PETAL.LENGTH" "PETAL.WIDTH"  "SPECIES"     

Pour une transformation personnalisée — par exemple préfixer chaque nom par var_ — passez une fonction anonyme :

library(dplyr)
iris_prefixed <- rename_with(iris, function(x) paste0("var_", x))
names(iris_prefixed)
[1] "var_Sepal.Length" "var_Sepal.Width"  "var_Petal.Length" "var_Petal.Width" 
[5] "var_Species"     

base R — setNames() ou affecter un vecteur transformé

setNames() renvoie l’objet avec les nouveaux noms en un seul appel — pas besoin de copie temporaire :

iris_upper <- setNames(iris, toupper(names(iris)))
names(iris_upper)
[1] "SEPAL.LENGTH" "SEPAL.WIDTH"  "PETAL.LENGTH" "PETAL.WIDTH"  "SPECIES"     

Ou affectez le vecteur transformé à names() :

iris_prefixed <- iris
names(iris_prefixed) <- paste0("var_", names(iris_prefixed))
names(iris_prefixed)
[1] "var_Sepal.Length" "var_Sepal.Width"  "var_Petal.Length" "var_Petal.Width" 
[5] "var_Species"     

Même résultat que rename_with()setNames() est l’expression base-R en une ligne.

Avant et après

Un moyen rapide de confirmer qu’un renommage a fait ce que vous attendiez — comparez les noms côte à côte :

library(dplyr)
after <- rename(iris, sepal_len = Sepal.Length, species = Species)
data.frame(before = names(iris), after = names(after))
        before        after
1 Sepal.Length    sepal_len
2  Sepal.Width  Sepal.Width
3 Petal.Length Petal.Length
4  Petal.Width  Petal.Width
5      Species      species

Tous les autres noms sont inchangés ; seuls les deux que vous avez ciblés ont bougé.

Essayez en direct

Les blocs ci-dessus se sont exécutés au moment de la construction. Modifiez celui-ci et appuyez sur Run pour renommer des colonnes par vous-même — il s’exécute dans votre navigateur via webR (sans installation).

🟢 Avec un agent IA

Collez les names() de votre propre data frame et demandez à Prova « renomme ces colonnes en snake_case » — elle écrit l’appel rename(), et comme le runtime est juste ici, vous l’exécutez pour confirmer que les noms ont réellement changé sur vos données. Demander à Prova →

Vous travaillez en Python ? Un guide pandas rename / df.columns arrive dans la série Python.

Problèmes courants

rename() indique « object not found » / le renommage ne fait rien. L’ordre est new = old, pas old = new. rename(iris, Sepal.Length = sepal_len) cherche une colonne appelée sepal_len (qui n’existe pas) et échoue. Le nouveau nom à gauche, le nom existant à droite.

Renommer une colonne qui n’existe pas. dplyr rename() génère une erreur claire si l’ancien nom est faux (Column 'Sepallength' doesn't exist). La forme par correspondance base-R ne fait rien silencieusement — names(df)[names(df) == "Sepallength"] <- "x" ne correspond à rien et laisse le data frame inchangé, donc aucune erreur ne vous signale l’échec du renommage. Vérifiez names(df) ensuite. Les noms sont sensibles à la casse : Sepal.Lengthsepal.length.

Noms avec des espaces ou des caractères spéciaux. Une colonne nommée littéralement Sepal Length nécessite des backticks dans dplyr : rename(df, sepal_len =Sepal Length). En base R, la chaîne de correspondance par nom gère les espaces sans problème : names(df)[names(df) == "Sepal Length"] <- "sepal_len".

Questions fréquentes

Avec dplyr : rename(df, new_name = old_name) — le nouveau nom va à gauche. Avec base R, affectez à names() en faisant correspondre l’ancien nom : names(df)[names(df) == "old_name"] <- "new_name". Les deux donnent le même résultat.

Dans dplyr, listez plusieurs paires en un seul appel : rename(df, a = X1, b = X2, c = X3). En base R, affectez un vecteur complet de nouveaux noms à colnames(df) (l’ordre doit correspondre aux colonnes actuelles), ou répétez l’affectation par correspondance de nom pour chaque colonne à modifier.

Indexez dans le vecteur de noms : names(df)[2] <- "new_name" renomme la deuxième colonne. C’est la méthode la plus directe pour renommer par position, mais elle est fragile — si l’ordre des colonnes change, elle renomme la mauvaise colonne, alors préférez le renommage par nom dans les scripts.

Ils produisent le même data frame. dplyr::rename(new = old) est concis, se lit clairement et génère une erreur bruyante si l’ancien nom est faux. Les fonctions base-R names()/colnames()/setNames() ne nécessitent aucun package et fonctionnent partout, mais la forme par correspondance de nom échoue silencieusement quand le nom est mal orthographié. Utilisez celle qui convient à votre code.

Appliquez une fonction aux noms. dplyr : rename_with(df, toupper) met chaque nom en majuscules ; passez n’importe quelle fonction pour des transformations personnalisées. Base R : setNames(df, toupper(names(df))), ou names(df) <- paste0("var_", names(df)) pour ajouter un préfixe.

Testez vos connaissances

Renommez Petal.Length de iris en petal_len et Petal.Width en petal_wid. D’abord avec dplyr rename(), puis avec la forme par correspondance de nom de base R — et confirmez que les deux donnent les mêmes names().

# dplyr is new = old: rename(iris, petal_len = Petal.Length, petal_wid = Petal.Width)
# base R assigns the NEW name string to the matched position.
library(dplyr) dplyr_way <- rename(iris, petal_len = Petal.Length, petal_wid = Petal.Width) base_way <- iris names(base_way)[names(base_way) == "Petal.Length"] <- "petal_len" names(base_way)[names(base_way) == "Petal.Width"] <- "petal_wid" identical(names(dplyr_way), names(base_way)) # TRUE
library(dplyr)

dplyr_way <- rename(iris, petal_len = Petal.Length, petal_wid = Petal.Width)

base_way <- iris
names(base_way)[names(base_way) == "Petal.Length"] <- "petal_len"
names(base_way)[names(base_way) == "Petal.Width"]  <- "petal_wid"

identical(names(dplyr_way), names(base_way))  # TRUE

Vous voulez renommer mpg en miles_per_gallon dans mtcars. Lequel est correct ?

A. rename(mtcars, mpg = miles_per_gallon) B. rename(mtcars, miles_per_gallon = mpg) C. names(mtcars)["mpg"] <- "miles_per_gallon"

Afficher la réponse

B. dplyr est toujours new = old, donc le nouveau nom miles_per_gallon va à gauche. A les inverse (et génère une erreur, puisqu’il n’y a pas de colonne miles_per_gallon). C indexe par une chaîne de nom plutôt que par une correspondance logique — utilisez names(mtcars)[names(mtcars) == "mpg"] <- "miles_per_gallon".

Conclusion

Renommer des colonnes se résume à deux outils équivalents : dplyr rename(new = old) (et rename_with() pour les transformations en masse), ou l’affectation base-R à names()/colnames() (et setNames() pour l’expression en une ligne). Renommez par nom dans les scripts que vous réexécutez, réservez le renommage par position aux corrections rapides, et rappelez-vous que l’ordre est toujours new = old.

Leçons connexes

Cette page vous a-t-elle été utile ?

Prouvez que vous savez le faire. Maîtrisez toute la série Manipulation de données en R et Python — suivez votre parcours, construisez des projets et obtenez un certificat.

Commencer gratuitement →

Passez à Pro — Prova illimité sur vos propres données et un certificat vérifiable qui atteste la compétence.

dès 15 $/mois facturé annuellement

Passer à Pro →

✓ Vous êtes Pro — continuez. The runtime is the judge.

Recevez les nouvelles leçons R & Python par e-mail

Pratique, reproductible, sans spam. Désinscription à tout moment.

Double opt-in. Nous ne partageons jamais votre e-mail.

Partager cette pageXLinkedInRedditHN
Note

Cette leçon est reproductible : chaque résultat de cette page a été produit par le code affiché — modifiez n’importe quel bloc et appuyez sur Run pour le reproduire dans votre navigateur. The runtime is the judge.

Réutilisation

Citation

BibTeX
@online{2026,
  author = {},
  title = {Renommer des colonnes dans R : dplyr et base R},
  date = {2026-06-26},
  url = {https://www.datanovia.com/learn/programming/data-wrangling/rename-columns-in-r},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
“Renommer des colonnes dans R : dplyr et base R.” 2026. June 26. https://www.datanovia.com/learn/programming/data-wrangling/rename-columns-in-r.