放大R中的群集/热图
我有一个问题,关于在我的数据集中找到的集群上缩放。我想创建尽可能多的新矩阵作为给定数量的集群,因为它返回。具体而言,我不确定如何回到数据中,并将感兴趣的子群体剔除。我知道我能做到:放大R中的群集/热图,r,heatmap,hierarchical-clustering,R,Heatmap,Hierarchical Clustering,我有一个问题,关于在我的数据集中找到的集群上缩放。我想创建尽可能多的新矩阵作为给定数量的集群,因为它返回。具体而言,我不确定如何回到数据中,并将感兴趣的子群体剔除。我知道我能做到: mycl <- cutree(hr, 2); mycl我想到两件事: 解决方案1: # Convert to a dendrogram object hor.dendro <- as.dendrogram(hr) # Get values for the first branch m.1 <- m
mycl <- cutree(hr, 2);
mycl我想到两件事:
解决方案1:
# Convert to a dendrogram object
hor.dendro <- as.dendrogram(hr)
# Get values for the first branch
m.1 <- m[unlist(hor.dendro[[1]]),]
这将返回(使用2个组调用cutree
)
您可以使用[[]]
操作符访问结果,例如:集群[[2]]
以获取第二个集群。错误:未找到对象“hr”
您可以使问题重现吗?变量名称中有错误,我已修复它,请检查代码是否符合预期(我还更改了颜色,因为您没有包含自定义颜色的定义)完成了!现在我想知道的是,看看左边有两个集群,我想说黄色的一个作为矩阵m_1,粉色的一个作为矩阵m_2。我的代码现在应该可以工作了。thx@Nico你会做些什么统计比较来查看功能Uniqune..我在考虑chisqr比较,但不确定什么和如何实现。真的要看情况而定关于具体的问题。你想比较的是什么?这些值总是0/1还是它们可以有其他值?我假设某种距离测量可以,但我不是专家。另外,请注意,你不能保证有相同大小的簇,所以这可能是一个问题…你可能想就此问一个单独的问题,当然是有些人在这方面比我强!
library(gplots)
mycl <- cutree(hr, 2);
mycolhc <- rainbow(length(unique(mycl)), start=0.1, end=0.9);
mycolhc <- mycolhc[as.vector(mycl)]
myheatcol <- redgreen(75)
# Creates heatmap for entire data set
heatmap.2(
m,
Rowv=as.dendrogram(hr),
Colv=as.dendrogram(hc),
col=myheatcol,
scale="row",
density.info="none",
trace="none",
RowSideColors=mycolhc,
cexCol=0.6,
labRow=NA
)
# Convert to a dendrogram object
hor.dendro <- as.dendrogram(hr)
# Get values for the first branch
m.1 <- m[unlist(hor.dendro[[1]]),]
# Cut the tree in 2
tree.cut <- cutree(hr, 2)
# Get the ids for cluster #1
clust.1 <- which(tree.cut==1)
# Get the values from m
m.1 <- m[clust.1,]
clusters <- lapply(unique(tree.cut), function(grp)
{
m[which(tree.cut==grp),]
})
[[1]]
1 2 3 4 5
A 0 0 0 0 1
B 0 0 0 1 1
C 0 0 1 1 1
D 0 0 1 1 0
I 0 1 1 1 0
[[2]]
1 2 3 4 5
E 1 0 0 0 0
F 1 1 1 0 0
G 0 1 1 0 0
H 0 1 1 0 0
J 1 1 1 0 1