我有一个名为“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')

其他回答

Try:

names(newprice)[1] <- "premium"

你可以通过以下方法进行编辑:

newprice <- edit(newprice)

并手动更改列名。

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

library(data.table)

setDT(dataframe)

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

新的推荐方法是使用setNames函数。看到 ? setNames。由于这将创建data.frame的新副本,因此如果您希望这样做,请确保将结果分配给原始data.frame。

data_frame <- setNames(data_frame, c("premium","change","newprice"))

如果您以以前的答案中建议的某些方式使用冒号,那么新版本的R将会给出警告。

如果这是一个数据。表,您可以使用数据。表函数setnames,它可以通过引用修改特定的列名或单个列名:

setnames(data_table, "old-name", "new-name")

更改数据帧列名

colnames(dataset)[colnames(dataset) == 'name'] <- 'newcolumnname'