names(iris)[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
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.
26 juin 2026
7 juillet 2026
rename(new_name = old_name) renomme par nom ; listez plusieurs paires pour en renommer plusieurs à la fois.names(df) ou colnames(df) — par position (names(df)[2] <- "x") ou en faisant correspondre l’ancien nom.rename_with(df, toupper) (dplyr) ou setNames() (base R).new = old dans dplyr ; une source fréquente d’erreurs « object not found ».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 :
rename() — concis, se lit comme une phrase, le choix moderne par défaut.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 :
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.
[1] "sepal_len" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
La colonne est renommée ; toutes les autres colonnes restent intactes.
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 :
[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 :
[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.
Listez autant de paires new = old que nécessaire, séparées par des virgules :
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 :
[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.
Parfois vous ne connaissez pas l’ancien nom — vous savez seulement « renommer la deuxième colonne ». Indexez dans names() :
[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.
Pour transformer tous les noms à la fois — les mettre en majuscules, en minuscules, ajouter un préfixe — appliquez une fonction au vecteur de noms.
rename_with()rename_with() applique une fonction aux noms de colonnes. Passez toupper pour mettre chaque nom en majuscules :
[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 :
setNames() ou affecter un vecteur transformésetNames() renvoie l’objet avec les nouveaux noms en un seul appel — pas besoin de copie temporaire :
[1] "SEPAL.LENGTH" "SEPAL.WIDTH" "PETAL.LENGTH" "PETAL.WIDTH" "SPECIES"
Ou affectez le vecteur transformé à names() :
[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.
Un moyen rapide de confirmer qu’un renommage a fait ce que vous attendiez — comparez les noms côte à côte :
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é.
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).
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.
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.Length ≠ sepal.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".
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.
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().
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".
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.
arrange()/order(). · Ajouter et calculer des colonnes avec mutate — dériver de nouvelles variables.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.
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
✓ 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.
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.
@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}
}