虽然这很容易用碱R或做setnames in data.table或rename_在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)
我怎样才能做到这一点用rename或rename_at在dplyr0.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)