Podemos usar rename_with
para renomear colunas com uma função ( stringr
funções, por exemplo).
Considere os seguintes dados 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"
Renomeie todas as variáveis com 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"
Renomeie por partículas nome com alguns dplyr
verbos ( starts_with
, ends_with
, contains
, matches
, ...).
Exemplo com .
( x
variáveis):
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"
Renomeie pela classe com muitas funções de teste de classe, como is.integer
, is.numeric
, is.factor
...
Exemplo com 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"
O aviso:
Mensagens de aviso: 1: Em stri_replace_first_regex (string, padrão, fix_replacement (substituto),: o comprimento maior do objeto não é um múltiplo do menor tamanho 2: Nos nomes [cols] <- .fn (names [cols], ...) : número de itens a serem substituídos não é um múltiplo de comprimento de substituição
Não é relevante, pois é apenas uma inconsistência seq_along(.)
com a função de substituição.
drop=TRUE
argumento padrão para[
, que faz com que um objeto "1 coluna" seja convertido em um vetor ... e os vetores não possuemcolnames
. Um exemplo do que você tentou seria muito útil.