虽然这很容易在setnames
0.5中使用基础R或in data.table
rename_
或dplyr
。由于rename_
已被弃用,我无法在dplyr
0.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
预期产出:
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
如何在rename
0.6.0中使用rename_at
或dplyr
执行此操作?
答案 0 :(得分:11)
我不知道这是否是接近它的正确方法,但
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
还要注意我的未来生活:
# packageVersion("dplyr")
# # [1] ‘0.7.0’