给定列名称和替换的字符向量的多个列

mt1*_*022 6 r dplyr

虽然这很容易用碱R或做setnames in data.tablerename_dplyr0.5.由于rename_不推荐使用,我无法在dplyr0.6.0中找到一种简单的方法.

以下是一个例子.我想col.from用以下相应的值替换列名col.to:

col.from <- c("wt", "hp", "vs")
col.to <- c("foo", "bar", "baz")

df <- mtcars
head(df, 2)
#>               mpg cyl disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4      21   6  160 110  3.9 2.620 16.46  0  1    4    4
#> Mazda RX4 Wag  21   6  160 110  3.9 2.875 17.02  0  1    4    4
Run Code Online (Sandbox Code Playgroud)

预期产量:

names(df)[match(col.from, names(df))] <- col.to
head(df, 2)
#>               mpg cyl disp bar drat   foo  qsec baz am gear carb
#> Mazda RX4      21   6  160 110  3.9 2.620 16.46   0  1    4    4
#> Mazda RX4 Wag  21   6  160 110  3.9 2.875 17.02   0  1    4    4
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点用renamerename_atdplyr0.6.0?

luk*_*keA 13

我不知道这是否是接近它的正确方法,但是

library(dplyr)
df %>% rename_at(vars(col.from), function(x) col.to) %>% head(2)
#               mpg cyl disp bar drat   foo  qsec baz am gear carb
# Mazda RX4      21   6  160 110  3.9 2.620 16.46   0  1    4    4
# Mazda RX4 Wag  21   6  160 110  3.9 2.875 17.02   0  1    4    4
Run Code Online (Sandbox Code Playgroud)

还要注意我的未来生活:

# packageVersion("dplyr")
# # [1] ‘0.7.0’
Run Code Online (Sandbox Code Playgroud)

  • 或略短的`df%>%rename_at(vars(col.from),~col.to)` (8认同)