Это прекрасная возможность использовать !!
:
library(tidyverse)
data <- tribble(
~x, ~y,
1, 11,
2, 22,
3, 33
)
name_tbl <- tribble(
~old, ~new,
"x", "haha",
"y", "hoho"
)
(name_pairs <- with(name_tbl, set_names(old, new)))
#> haha hoho
#> "x" "y"
rename(data, !!name_pairs)
#> # A tibble: 3 x 2
#> haha hoho
#> <dbl> <dbl>
#> 1 1 11
#> 2 2 22
#> 3 3 33
Создано в 2019-10-21 с помощью пакета Представить (v0.3.0)
rename()
использует пары имя-значение (с новыми именами в качестве имен), поэтому нам просто нужно: 1) взять вектор старых имен, 2) дать ему имена новых имен,и 3) вызовите rename()
с указанным вектором без кавычек, поскольку мы передаем пары как значение объекта, а не как синтаксис.