给定列名和替换的字符向量,重命名多个列 [英] Rename multiple columns given character vectors of column names and replacement

查看:19
本文介绍了给定列名和替换的字符向量,重命名多个列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

虽然这很容易使用基本 R 或 setnames in data.tablerename_dplyr0.5.由于 rename_ 已被弃用,我在 dplyr 0.6.0 中找不到一种简单的方法来做到这一点.

While this is easy to do with base R or setnames in data.table or rename_ in dplyr 0.5. Since rename_ is deprecated, I couldn't find an easy way to do this in dplyr 0.6.0.

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

Below is an example. I want to replace column name in col.from with corresponding values in 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

如何使用 dplyr 0.6.0 中的 renamerename_at 执行此操作?

How can I do this with rename or rename_at in dplyr 0.6.0?

推荐答案

我不知道这是否是解决它的正确方法,但是

I don't know if this is the right way to approach it, but

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

另请注意,我生活在未来:

Also note that I live in the future:

# packageVersion("dplyr")
# # [1] ‘0.7.0’

这篇关于给定列名和替换的字符向量,重命名多个列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆