如何重命名data.frame中的单个列?

我知道如果我有超过1列的数据框,我可以使用

colnames(x) <- c("col1","col2") 

重命名列。 如果只有一列,我该怎么做? 意思是只有一列的vector或数据框。

例:

 trSamp <- data.frame(sample(trainer$index, 10000)) head(trSamp ) # sample.trainer.index..10000. # 1 5907862 # 2 2181266 # 3 7368504 # 4 1949790 # 5 3475174 # 6 6062879 ncol(trSamp) # [1] 1 class(trSamp) # [1] "data.frame" class(trSamp[1]) # [1] "data.frame" class(trSamp[,1]) # [1] "numeric" colnames(trSamp)[2] <- "newname2" # Error in names(x) <- value : # 'names' attribute [2] must be the same length as the vector [1] 
 colnames(trSamp)[2] <- "newname2" 

尝试设置第二列的名称。 你的对象只有一列,所以这个命令会抛出一个错误。 这应该足够了:

 colnames(trSamp) <- "newname2" 

这是一种通用的方式,您不必记住variables的确切位置:

 # df = dataframe # old.var.name = The name you don't like anymore # new.var.name = The name you want to get names(df)[names(df) == 'old.var.name'] <- 'new.var.name' 

这段代码几乎做了以下事情:

  1. names(df)查看names(df)所有名称
  2. [names(df) == old.var.name]提取您想要检查的variables名称
  3. <- 'new.var.name'分配新的variables名称。
 colnames(df)[colnames(df) == 'oldName'] <- 'newName' 

这是一个老问题,但值得注意的是,现在可以使用data.table包中的data.table

 library(data.table) setnames(DF, "oldName", "newName") # or since the data.frame in question is just one column: setnames(DF, "newName") # And for reference's sake, in general (more than once column) nms <- c("col1.name", "col2.name", etc...) setnames(DF, nms) 

这也可以通过使用Hadley的plyr包和renamefunction来完成。

 library(plyr) df <- data.frame(foo=rnorm(1000)) df <- rename(df,c('foo'='samples')) 

您可以通过名称进行重命名(不知道位置),并一次执行多个重命名。 例如,在合并之后,您可能会得到:

  letterid id.x id.y 1 70 2 1 2 116 6 5 3 116 6 4 4 116 6 3 5 766 14 9 6 766 14 13 

您可以使用以下方法一步重命名:

 letters <- rename(letters,c("id.x" = "source", "id.y" = "target")) letterid source target 1 70 2 1 2 116 6 5 3 116 6 4 4 116 6 3 5 766 14 9 6 766 14 13 

我喜欢下一个重新命名dataframe列名的样式。

 colnames(df)[which(colnames(df) == 'old_colname')] <- 'new_colname' 

哪里

 which(colnames(df) == 'old_colname') 

由特定列的索引返回。

尝试:

 colnames(x)[2] <- 'newname2' 

我认为重命名列的最好方法是使用这样的dplyr包:

 require(dplyr) df = rename(df, new_col01 = old_col01, new_col02 = old_col02, ...) 

对于重命名任何数据集中的一列或多列,它的工作原理是一样的。

如果你知道你的数据names(trSamp) <- "newname2"只有一列,你可以使用: names(trSamp) <- "newname2"

你也可以尝试'Hmisc'包中的'upData'。

library(Hmisc)

trSamp = upData(trSamp, rename=c(sample.trainer.index..10000. = 'newname2'))

你可以使用gdata包中的rename.vars

 library(gdata) df <- rename.vars(df, from = "oldname", to = "newname") 

当你有多个variables名称要改变,或者你想要将一些文本添加到variables名称中时,这是特别有用的,然后你可以这样做:

 df <- rename.vars(df, from = c("old1", "old2", "old3", to = c("new1", "new2", "new3")) 

有关将文本附加到variables名称子集的示例,请参阅: https : //stackoverflow.com/a/28870000/180892

这可能已经在那里,但我正在寻找一个解决scheme,并尝试了这个一时兴起的重命名领域。 为我的目的工作。

 Table1$FieldNewName <- Table1$FieldOldName Table1$FieldOldName <- NULL 

编辑从这里开始….

这也适用。

 df <- rename(df, c("oldColName" = "newColName"))