我是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中存在的行数
感谢您提供的任何帮助!
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)