Possiamo usare rename_with
per rinominare le colonne con una funzione ( stringr
funzioni, ad esempio).
Considera i seguenti dati 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"
Rinomina tutte le variabili con 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"
Rinomina dal nome di particelle con alcuni dplyr
verbi ( starts_with
, ends_with
, contains
, matches
, ...).
Esempio con .
( x
variabili):
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"
Rinomina per classe con molte funzioni di prova di classe, come is.integer
, is.numeric
, is.factor
...
Esempio con 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'avviso:
Messaggi di avviso: 1: In stri_replace_first_regex (stringa, modello, fix_replacement (sostituzione),: la lunghezza dell'oggetto più lunga non è un multiplo della lunghezza dell'oggetto più corta 2: In names [cols] <- .fn (names [cols], ...) : il numero di articoli da sostituire non è un multiplo della lunghezza di sostituzione
Non è rilevante, poiché è solo un'incoerenza seq_along(.)
rispetto alla funzione di sostituzione.
drop=TRUE
dall'argomento predefinito in[
, che causa la conversione di un oggetto "1 colonna" in un vettore ... e i vettori non hannocolnames
. Un esempio di ciò che hai provato sarebbe molto utile.