如何命名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")