我有一个名为“newprice”的数据帧(见下文),我想在R中改变我的程序中的列名。

> newprice
   Chang.  Chang.   Chang.
1     100       36      136
2     120      -33       87
3     150       14      164

事实上,这就是我所做的:

names(newprice)[1]<-paste("premium")
names(newprice)[2]<-paste("change")
names(newprice)[3]<-paste("newprice") 

我没有将它放入循环中,因为我希望每个列名都是不同的。

当我把我的程序粘贴到R控制台,这是它给我的输出:

> names(newprice)[1]<-paste(“premium”)
Error: unexpected input in "names(newprice)[1]<-paste(“"
> names(newprice)[2]<-paste(“change”)
Error: unexpected input in "names(newprice)[2]<-paste(“"
> names(newprice)[3]<-paste(“newpremium”)
Error: unexpected input in "names(newprice)[3]<-paste(“"

我同样尝试过使用c()函数——例如c("premium"),而不是paste()函数,但没有用。

有人能帮我弄清楚吗?


当前回答

使用data.table的一个选项是:

library(data.table)

setDT(dataframe)

setnames(dataframe,'Old1','New1')
setnames(dataframe,'Old2','New2')

其他回答

与其他相似:

cols <- c("premium","change","newprice")
colnames(dataframe) <- cols

相当简单,易于修改。

如果我们有2个数据帧,下面的工作

 DF1<-data.frame('a', 'b')
 DF2<-data.frame('c','d')

我们将DF1的名称更改如下

 colnames(DF1)<- colnames(DF2)

我有同样的问题,这段代码为我工作。

names(data)[names(data) == "oldVariableName"] <- "newVariableName"

简而言之,这段代码做了以下工作:

Names (data)查看数据框架(data)中的所有名称

[names(data) == oldVariableName]提取你想重命名的变量名(oldVariableName), <- "newVariableName"分配新的变量名。

这可能会有帮助:

rename.columns=function(df,changelist){
  #renames columns of a dataframe
  for(i in 1:length(names(df))){
    if(length(changelist[[names(df)[i]]])>0){
      names(df)[i]= changelist[[names(df)[i]]]
    }
  }
  df
}

# Specify new dataframe
df=rename.columns(df,list(old.column='new.column.name'))

我的列名如下

colnames(t)
[1] "Class"    "Sex"      "Age"      "Survived" "Freq" 

我想更改Class和Sex的列名

colnames(t)=c("STD","Gender","AGE","SURVIVED","FREQ")