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

Ase*_*ian 5 r

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

基本上我的数据看起来像

DataFrame1

A    B    C   D
1    2    3   4
Run Code Online (Sandbox Code Playgroud)

我有另一个看起来像这个'DataFrame2的表

Col1    Col2
A       E
B       Q
C       R
D       Z
Run Code Online (Sandbox Code Playgroud)

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

E    Q    R    Z
1    2    3    4
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用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])) 
    }
Run Code Online (Sandbox Code Playgroud)

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

这会产生N行错误"以下from值不存在于x:i"中,其中n是DataFrame1中存在的行数

感谢您提供的任何帮助!

Hac*_*k-R 6

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
Run Code Online (Sandbox Code Playgroud)

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

DataFrame2$Col2[match(names(DataFrame1),DataFrame2$Col1)]
Run Code Online (Sandbox Code Playgroud)