mnf*_*nfn 5 r dataframe dplyr tidyverse
使用查找数据框批量重命名列的最佳方法是什么?
我可以将它作为管道的一部分吗?
library(tidyverse)
df <- data_frame(
a = seq(1, 10)
, b = seq(10, 1)
, c = rep(1, 10)
)
df_lookup <- data_frame(
old_name = c("b", "c", "a")
, new_name = c("y", "z", "x")
)
Run Code Online (Sandbox Code Playgroud)
我知道如何手动完成
df %>%
rename(x = a
, y = b
, z = c)
Run Code Online (Sandbox Code Playgroud)
我在tidyverse/ dplyrpackages中寻求解决方案.
使用rlang; 首先使用 构建名称列表syms,然后将参数拼接到renamewithUQS或!!!运算符:
library(rlang); library(dplyr)
df %>% rename(!!!syms(with(df_lookup, setNames(old_name, new_name))))
# A tibble: 10 x 3
# x y z
# <int> <int> <dbl>
# 1 1 10 1
# 2 2 9 1
# 3 3 8 1
# 4 4 7 1
# 5 5 6 1
# 6 6 5 1
# 7 7 4 1
# 8 8 3 1
# 9 9 2 1
#10 10 1 1
Run Code Online (Sandbox Code Playgroud)