我有一些问题需要了解row.names
是什么以及它是如何运作的。而且,我如何使我的数据能够完成row.names
允许人们做的事情。
例如,我正在使用下面的代码创建一些集群(我的数据)。我想导出sapply
行的结果,但现在只导出屏幕。我的数据框的第一列(path_country)是国家/地区名称,其他列是其他变量(整数)。我没有看到将这些群集导出到表格或国家/地区列表及其组成员身份的简便方法。
我尝试使用R中的示例数据集制作一个虚拟示例。例如,mtcars
,然后我注意到第一列被表示为row.names
。使用mtcars
,我可以创建群集cutree
到指定数量的组,然后另存为数据框。通过这种方法,我在第一列中有'汽车名称',第二列中有组号(或多或少,可以清理看起来更好,但基本上就是我所追求的),这就是我想要的与我的数据一起发生。
对此的任何想法都将不胜感激。
# my data
path_country <- read.csv("C:/path_country.csv")
patho <- subset(path_country, select=c(2:188))
patho.d <- dist(patho)
patho.hclust <- hclust(patho.d)
patho.hclust.groups11 = cutree(patho.hclust,11)
sapply(unique(patho.hclust.groups11),function(g)path_country$Country[patho.hclust.groups11 == g])
# mtcars data
car.d <- dist(mtcars)
car.h <- hclust(car.d)
car.h.11 <- cutree(car.h, 11)
nice_result <- as.data.frame(car.h.11)
write.table(nice_result, "test.txt", sep="\t")
答案 0 :(得分:1)
1)您可以使用CSV文件中的data.frame
创建row.names
:
# Names in the first column
path_country <- read.table("C:/path_country.csv", row.names=1)
# Names in column "Country"
path_country <- read.table("C:/path_country.csv", row.names="Country", head=TRUE)
请注意,在第二种情况下,您应指定head=TRUE
以使用列的名称。
现在rownames(path_country)
应该为您提供包含行名称的向量,并为导出提供as.data.frame(patho.hclust.groups11)
不错的结果。
2)您可以随时使用命令为data.frame
指定行的名称:
rownames(path_country) <- names.vector
其中names.vector
是一个向量,其唯一名称长度等于data.frame
中的行数。在您的示例中:
rownames(patho.hclust.groups11) <- path_country$Country
请注意,如果您使用第一种方法,则不需要此命令。