0

我在理解什么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")
4

1 回答 1

1

1) 您可以data.frame使用row.namesCSV 文件创建:

# 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.framewith 命令指定行的名称:

rownames(path_country) <- names.vector

其中names.vector是一个向量,其唯一名称的长度等于 中的行数data.frame。在您的示例中:

rownames(patho.hclust.groups11) <- path_country$Country

请注意,如果您使用第一种方法,则不需要此命令。

于 2013-01-14T17:42:44.500 回答