Nous pouvons utiliser rename_with
pour renommer les colonnes avec une fonction (stringr
fonctions, par exemple).
Tenez compte des données suivantes df_1
:
df_1 <- data.frame(
x = replicate(n = 3, expr = rnorm(n = 3, mean = 10, sd = 1)),
y = sample(x = 1:2, size = 10, replace = TRUE)
)
names(df_1)
#[1] "x.1" "x.2" "x.3" "y"
Renommez toutes les variables avec dplyr::everything()
:
library(tidyverse)
df_1 %>%
rename_with(.data = ., .cols = everything(.),
.fn = str_replace, pattern = '.*',
replacement = str_c('var', seq_along(.), sep = '_')) %>%
names()
#[1] "var_1" "var_2" "var_3" "var_4"
Renommer par particule nom avec des dplyr
verbes ( starts_with
, ends_with
, contains
,matches
, ...).
Exemple avec .
( x
variables):
df_1 %>%
rename_with(.data = ., .cols = contains('.'),
.fn = str_replace, pattern = '.*',
replacement = str_c('var', seq_along(.), sep = '_')) %>%
names()
#[1] "var_1" "var_2" "var_3" "y"
Renommer par classe avec de nombreuses fonctions de test de classe, comme is.integer
, is.numeric
, is.factor
...
Exemple avec is.integer
( y
):
df_1 %>%
rename_with(.data = ., .cols = is.integer,
.fn = str_replace, pattern = '.*',
replacement = str_c('var', seq_along(.), sep = '_')) %>%
names()
#[1] "x.1" "x.2" "x.3" "var_1"
L'avertissement:
Messages d'avertissement: 1: dans stri_replace_first_regex (chaîne, modèle, fix_replacement (remplacement),: la longueur d'objet plus longue n'est pas un multiple de la longueur d'objet plus courte 2: dans les noms [cols] <- .fn (noms [cols], ...) : le nombre d'articles à remplacer n'est pas un multiple de la longueur de remplacement
Il n'est pas pertinent, car il s'agit simplement d'une incohérence seq_along(.)
avec la fonction de remplacement.
drop=TRUE
argument par défaut de[
, qui provoque la conversion d'un objet "1 colonne" en vecteur ... et les vecteurs n'en ont pascolnames
. Un exemple de ce que vous avez essayé serait très utile.