重命名数据框的列

时间:2019-02-21 12:11:19

标签: r tidyverse purrr

我有一个基本上像这样的数据框(包含数据):

t <- data.frame(x1 = 1:5, x2 = 1:5, stingsAsFactors = FALSE)

我还有另一个数据框,其中包含原始列名,并且每个列都有一个替换

n <- data.frame(abb = c("x1", "x2"), erf = c("XX1", "XX2"), stringsAsFactors = FALSE)

我想做的是根据数据帧n中的规范重命名数据帧t中的列。我的问题是我不知道如何使用map做到这一点。为什么以下错误:

map2_dfr(n$abb, n$erf, function(x, y) rename(t, !!y := x))

2 个答案:

答案 0 :(得分:2)

我们可以使用rename_at

library(dplyr)
t %>%
    rename_at(n$abb, ~ n$erf)

答案 1 :(得分:2)

这是使用match在基数R中的单线,

names(t) <- n$erf[match(names(t), n$abb)]
t
#  XX1 XX2
#1   1   1
#2   2   2
#3   3   3
#4   4   4
#5   5   5