为什么使用 select 或 colnames 不会更改列名?

问题描述

我尝试复制数据框中的一列。接下来我尝试重命名下面代码中的列名,虽然我没有成功。

library(dplyr)

d <- data.frame(red=1:3,green=4:6,yellow=7:9)

for (q in 1:3) {
            
  d$color <- select(d,q)
  
  colnames(d)[4] <- "newcolor"

}  
 

首先我尝试使用 d$newcolor 更改名称,但没有成功。 接下来我尝试使用也不成功的 colnames。虽然这在前 3 列上运行良好。

我需要一个通过数字识别列的解决方案,因为我需要它作为循环的一部分。 (我实际上尝试使用不同的源列填充每个循环的第 4 列)

非常感谢!

解决方法

试试这个:使用 dplyr

library(dplyr)

d <- data.frame(red=1:3,green=4:6,yellow=7:9)
d%>%mutate(newcolor=yellow)

没有dplyr

d <- data.frame(red=1:3,yellow=7:9) 
d$somename<-d$yellow
colnames(d)[4]<-"newcolor"

据我所知,dplyr 有自己的语法。我们不能总是将它与基础 R 结合起来。