如何命名data.frame中未命名的第一列

如何命名data.frame中未命名的第一列,r,dataframe,R,Dataframe,我有一个如下所示的数据框: > mydf val1 val2 hsa-let-7a 2.139890 -0.03477569 hsa-let-7b 2.102590 0.04108795 hsa-let-7c 2.061705 0.02375882 hsa-let-7d 1.938950 -0.04364545 hsa-let-7e 1.889000 -0.10

我有一个如下所示的数据框:

> mydf
                   val1     val2
hsa-let-7a         2.139890 -0.03477569
hsa-let-7b         2.102590  0.04108795
hsa-let-7c         2.061705  0.02375882
hsa-let-7d         1.938950 -0.04364545
hsa-let-7e         1.889000 -0.10575235
hsa-let-7f         2.264296  0.08465690
请注意,从3列中,只有第2列和第3列是名称。 我想做的是命名第一列(加上重命名第二列和第三列)

但是为什么这个命令失败了呢

colnames(mydf) <- c("COL1","VAL1","VAL2");

colnames(mydf)您可以将行名称连接到数据帧,如下所示:

mydf <- cbind(rownames(mydf), mydf)
rownames(mydf) <- NULL
colnames(mydf) <- c("COL1","VAL1","VAL2")

这可能也适用于您的情况

mydf <- cbind(rownames(mydf),mydf)
rownames(mydf) <- NULL
colnames(mydf) <- c(names(mydf)) #to not write all the column names

colnames(mydf)[1] <- "name.of.the.first.column" 
names(mydf)

mydf如果一个人想在他/她的管道中使用
tidyverse
解决方案,这是可行的

rownames_to_column(mydf, var = "var_name")

该函数包含在
tibble
包中

它似乎不是一列。。。看起来它们是行名称。如果您希望将它们作为列,请执行以下操作:
mydf$bla第一个“列”就是
rownames
?请尝试
行名(mydf)
?这些是行名。但在我看来,在数据帧中将它们用作列不是一个好主意,因为行名是元数据,而不是数据?为了理解错误,请尝试
ncol(df)
。您将看到数据帧中的列数为2,而您提供的向量长度为3。其余的问题已经回答了。
mydf <- cbind(rownames(mydf),mydf)
rownames(mydf) <- NULL
colnames(mydf) <- c(names(mydf)) #to not write all the column names

colnames(mydf)[1] <- "name.of.the.first.column" 
names(mydf)
rownames_to_column(mydf, var = "var_name")