Możemy użyć rename_with
do zmiany nazwy kolumn za pomocą funkcji (stringr
na przykład funkcji).
Rozważ następujące dane 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"
Zmień nazwę wszystkich zmiennych za pomocą 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"
Zmiany nazwy o nazwą cząsteczki z niektórych dplyr
czasowników ( starts_with
, ends_with
, contains
,matches
, ...).
Przykład z .
( x
zmienne):
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"
Zmiana nazwy przez klasy z wieloma funkcjami testu klasy, jak is.integer
, is.numeric
, is.factor
...
Przykład z 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"
Ostrzeżenie:
Komunikaty ostrzegawcze: 1: In stri_replace_first_regex (string, pattern, fix_replacement (replace),: dłuższa długość obiektu nie jest wielokrotnością krótszej długości obiektu 2: W nazwach [cols] <- .fn (names [cols], ...) : liczba elementów do zastąpienia nie jest wielokrotnością długości wymiany
Nie ma to znaczenia, ponieważ jest to po prostu niespójność seq_along(.)
z funkcją zamiany.
drop=TRUE
domyślnym argumentem[
, który powoduje, że obiekt „1-kolumnowy” jest konwertowany na wektor ... a wektory tego nie mającolnames
. Przykład tego, co próbowałeś, byłby bardzo pomocny.