Podemos usar rename_with
para renombrar columnas con una función ( stringr
funciones, por ejemplo).
Considere los siguientes datos 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"
Cambie el nombre de todas las variables 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"
Cambiar el nombre de partículas nombre con algunos dplyr
verbos ( starts_with
, ends_with
, contains
, matches
, ...).
Ejemplo con .
( 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"
Cambiar el nombre de la clase con muchas funciones de prueba de clase, como is.integer
, is.numeric
, is.factor
...
Ejemplo 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"
La advertencia:
Mensajes de advertencia: 1: En stri_replace_first_regex (string, pattern, fix_replacement (reemplazo),: la longitud del objeto más largo no es un múltiplo de la longitud del objeto más corto 2: En los nombres [cols] <- .fn (nombres [cols], ...) : el número de elementos a reemplazar no es un múltiplo de la longitud de reemplazo
No es relevante, ya que es solo una inconsistencia seq_along(.)
con la función de reemplazo.
drop=TRUE
argumento predeterminado de[
, que hace que un objeto de "1 columna" se convierta en un vector ... y los vectores no lo tienencolnames
. Un ejemplo de lo que intentaste sería muy útil.