如何在R中设置行索引名称?(就像 Pandas 中的 DF.index.name)

O.r*_*rka 5 indexing row r labels dataframe

如何在R data.frame对象中设置行索引名称?

我尝试在 stackoverflow 上寻找答案,但我什至不知道如何搜索它?https://stackoverflow.com/search?q=set+row+index+name+dataframe+R

这是一种解释,但他们将其转换为矩阵? 如何命名 r 中的“行名称”列

> dimnames(DF_c) = c("sample","cluster")
Error in `dimnames<-.data.frame`(`*tmp*`, value = c("sample", "cluster" : 
  invalid 'dimnames' given for data frame
Run Code Online (Sandbox Code Playgroud)

在 Python 中Pandas,我会简单地做,DF_c.index.name = "samples"但我不知道如何在R. 我注意到当我保存它时write.table(DF_c, "output.tsv", sep="\t")它把我的列标签作为行名,但我不能做类似的事情,colnames(DF_c) = c( "samples","cluster")因为只有 1 列?

# Clusters
DF_c = data.frame(last_iter$c)
rownames(DF_c) = row_labels
colnames(DF_c) = c( "cluster")
Run Code Online (Sandbox Code Playgroud)

奖励:如何不包括将"表写入输出的时间?

在此处输入图片说明

小智 2

您正在正确设置行名称和列名称,您只是错过了“write.table”命令中的一个部分来删除引号:

write.table(DF_c, "output.tsv", sep="\t", quote = FALSE)
Run Code Online (Sandbox Code Playgroud)

列名覆盖输出表中的行名的原因似乎是 R 的一个奇怪之处,您可以通过使用列标签为行名创建一列,然后写出表来解决它:

DF_c = data.frame(last_iter$c)
colnames(DF_c) = c( "cluster")
DF_c$rownames = row_labels

write.table(DF_c, "output.tsv", sep="\t", quote = FALSE)
Run Code Online (Sandbox Code Playgroud)

  • 结合你的答案和@joran的帮助,我让它工作w/ `# Clusters DF_c = data.frame(last_iter$c) DF_c = cbind(samples = row_labels, DF_c, row.names = NULL) colnames( DF_c) = c("样本", "聚类")` (2认同)