如何根据R中的另一个数据帧重命名数据帧的所有列?

我是R.的新手.我正在尝试根据另一个数据帧重命名数据框的列.

基本上我的数据看起来像

DataFrame1

A    B    C   D
1    2    3   4

我有另一张看起来像这样的桌子
DataFrame2

Col1    Col2
A       E
B       Q
C       R
D       Z

我想根据此表重命名我的第一个数据框的列,以便它出来:

E    Q    R    Z
1    2    3    4

我正在尝试使用plyr库进行循环.这是我试过的命令:

library(plyr)
for (i in names(DataFrame1[,3:336])) #renaming columns 3 to 336
    { 
        rename(DataFrame1,
         replace = c(i = DataFrame2[DataFrame2$Col1 == i, 2])) 
    }

我的想法是DataFrame1中的每一列,通过查找DataFrame2中的列重命名该列.

这会产生N行错误“以下值来自x:i中不存在的值”,其中n是DataFrame1中存在的行数

感谢您提供的任何帮助!

最佳答案
A    B    C   D
1    2    3   4

DataFrame1 <- read.table(con <- file("clipboard"), header=T)

Col1    Col2
A       E
B       Q
C       R
D       Z

DataFrame2 <- read.table(con <- file("clipboard"), header=T)

colnames(DataFrame1) <- DataFrame2$Col2

如果列名称没有按照他们在示例中的顺序进行,则必须使用匹配:

DataFrame2$Col2[match(names(DataFrame1),DataFrame2$Col1)]

转载注明原文:如何根据R中的另一个数据帧重命名数据帧的所有列? - 代码日志