我使用R来聚类一个我称之为'tissuedata'的矩阵.我有一个使用以下代码生成的hclust对象:
TissueDist<-dist(tissuedata, method="euclidean")
TissueClust<-hclust(TissueDist, method='complete')
Run Code Online (Sandbox Code Playgroud)
现在我想打印出TissueClust中的行名,同时保留聚集行的顺序.有什么建议?
以下是'tissuedata'矩阵可以包含的示例:
Brain Bone Breast Lung Ovary Pancreas HeLa
17271422_17271984_ENSG00000026025 -3.266758 0.000000 -3.215719 -5.248721 0 -2.891329 -3.718194
17272608_17272709_ENSG00000026025 -4.304518 -4.560667 -3.359868 0.000000 0 -3.108627 -4.227678
17272632_17272709_ENSG00000026025 -4.188425 -4.444906 -3.243362 0.000000 0 -2.992122 -4.111259
17272649_17272709_ENSG00000026025 -3.984628 -4.338187 -3.104413 0.000000 0 -2.791452 -3.828157
17275586_17275681_ENSG00000026025 -3.278478 -3.932706 -2.903414 -4.480172 0 -2.781268 -3.423038
17276692_17276817_ENSG00000026025 -3.355184 -4.351640 -3.009279 0.000000 0 -3.231431 -4.194499
17276692_17276850_ENSG00000026025 -3.456211 -4.453457 -3.110306 0.000000 0 -3.332458 -4.294992
17277845_17277888_ENSG00000026025 -3.842749 -4.195861 -2.661506 0.000000 0 -2.373369 -3.436403
17277845_17277908_ENSG00000026025 -4.005683 …Run Code Online (Sandbox Code Playgroud) 所以,我有256个物体,并计算了它们之间的距离矩阵(成对距离).我的距离矩阵的子集如下:
> dm[1:10, 1:10]
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
[1,] 0 1 1 1 1 2 2 2 1 2
[2,] 1 0 1 1 2 1 2 2 2 1
[3,] 1 1 0 1 2 2 1 2 2 2
[4,] 1 1 1 0 2 2 2 1 2 2
[5,] 1 2 2 2 0 1 1 1 1 2
[6,] 2 1 2 2 1 0 1 1 2 1 …Run Code Online (Sandbox Code Playgroud) 我是R.的新手.我正在尝试在大约50K项目上运行hclust().我有10列要比较和50K行数据.当我尝试分配距离矩阵时,我得到:"无法分配5GB的矢量".
这有尺寸限制吗?如果是这样,我该如何做一个这么大的东西?
编辑
我最终增加了max.limit并将机器的内存增加到8GB,这似乎已经修复了它.
我已经尝试了几天来翻转树状图,以便最后一个基因是图中的第一个,第一个是最后一个。但即使我设法移动叶子,内部排序也不一样。这是我的脚本:
cluster.hosts <- read.table("Norm_0_to1_heatmap.txt", header = TRUE, sep="", quote="/", row.names = 1)
# A table with 8 columnns and 229 rows cirresponding to gene expression
hosts.dist <- dist(cluster.hosts, method = "euclidean", diag = FALSE, upper = FALSE, p = 2)
hc <- hclust(hosts.dist, method = "average")
dd <- as.dendrogram(hc)
order.dendrogram(dd)
X11()
par(cex=0.5,font=3)
plot(dd, main="Dendrogram of Syn9 genes")
order.dd <- order.dendrogram(dd) #the numbers in the order indicate the position of the gene in the original table
#Then I generate a vector …Run Code Online (Sandbox Code Playgroud) 下面这个脚本很好地运行,以获得具有庞大数据集的集群,但我需要将集群转换为newick文件或文本文件,以便我可以将它从R导出到其他编辑程序,但我找不到办法将hclust变成newick格式,我该怎么做?我觉得new2phylo函数可以完成这项工作,但我们没有设法让它工作.
我非常感谢你的帮助,因为我们到处搜索并找不到解决方案=(
datos <- read.table("morphclustersred.csv",header=T,sep="\t")
head(datos)
distfunc <- function(x) daisy(x,metric="gower")
d <- distfunc(datos)
hclustfunc <- function(x) hclust(x, method="complete")
fit <- hclustfunc(d)
plot(fit)
plot(fit, labels=datos$Species,main='Morphological Clustering')
rect.hclust(fit, k=5, border="red")
Run Code Online (Sandbox Code Playgroud) 使用hclust函数在R中执行层次聚类时.你怎么知道最终合并的高度?
所以要澄清一些R默认数据:
hc <- hclust(dist(USArrests))
dendrogram1 = as.dendrogram(hc)
plot(hc)
Run Code Online (Sandbox Code Playgroud)
将导致具有所有聚类信息的变量hc.

和树状图:

正如您在树形图上看到的那样,最终合并发生在> 200(约300)的高度.但是树状图是如何知道的?此信息不在hc.height变量中,也不在dendrogram1变量中.提到的最高合并是169.

如果dendrogram1变量不包含此信息,则绘图函数如何知道合并必须在300的高度发生?

我问这个是因为我需要这个数字(+ - 300)用于其他应用程序,从图中读取它是非常不切实际的.
感谢任何愿意帮助的人!
我使用cutree()将我的hclust()树聚集到几个组中.现在我想要一个函数来将几个组成员hclust()作为一个hclust()......还有:
我将一棵树切成168组,我想要168个hclust()树......我的数据是1600*1600矩阵.
我的数据太大了,所以我给你举个例子
m<-matrix(1:1600,nrow=40)
#m<-as.matrix(m) // I know it isn't necessary here
m_dist<-as.dist(m,diag = FALSE )
m_hclust<-hclust(m_dist, method= "average")
plot(m_hclust)
groups<- cutree(m_hclust, k=18)
Run Code Online (Sandbox Code Playgroud)
现在我要绘制18棵树......一组树.我试过很多..
我正在使用进行分层聚类分析 hclust()
代码如下所示:
hc <- hclust(dist(USArrests), "ave")
Run Code Online (Sandbox Code Playgroud)
现在,我需要的是获得一个表(或类似的东西),其中包含所有集群和属于它们的观察结果(通过它们的rowname,非数字),以便我可以将其保存到某些整体文件/数据框 - 例如Excel.(我想用不同的方法运行hclust几次,变量并最终评估结果.)
我现在,它可能很容易,但我被卡住了......你有什么建议吗?
Ps.:我也想知道它在使用时是如何工作的 kmeans()