在 R 的热图中写入 table,行名称在聚类后排序。2
Write table with row name ordered after clustering in R's heatmap.2
使用以下代码:
mydata <- mtcars
hclustfunc <- function(x) hclust(x, method="complete")
distfunc <- function(x) dist(x,method="euclidean")
heatmap.2(as.matrix(mydata),dendrogram="row",trace="none", margin=c(8,9), hclust=hclustfunc,distfun=distfunc);
我得到以下热图:
我想做的是将聚类的结果保存到一个文本文件中
但行名称按聚类结果排序:
mpg cyl disp hp drat wt qsec vs am gear carb
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.9 1 1 4 1
Porsche 914-2 26 4 120.3 91 4.43 2.14 16.7 0 1 5 2
Datsun 710 22.8 4 108 93 3.85 2.32 18.61 1 1 4 1
....
Maserati Bora 15 8 301 335 3.54 3.57 14.6 0 1 5 8
有什么方法可以做到?
我在上面代码的 heatmap.2
行之后尝试了这个,但没有给出
结果如我所愿。
write.table(mydata, "~/Desktop/tmp.txt",row.names = TRUE, quote=FALSE)
heatmap.2
函数不会对您的原始数据执行任何操作。如果您保存调用 heatmap.2
函数的结果,它将 return 可用于对数据重新排序的行树状图。例如
hh<-heatmap.2(as.matrix(mydata),dendrogram="row",
trace="none", margin=c(8,9),
hclust=hclustfunc,distfun=distfunc);
sorted <- mydata[match(rev(labels(hh$rowDendrogram)), rownames(mydata)), ]
#view result
head(sorted)
# mpg cyl disp hp drat wt qsec vs am gear carb
# Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
# Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
# Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
# Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
# Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
# Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
然后你可以使用 write.table
将 data.frame 的排序版本写入磁盘
使用以下代码:
mydata <- mtcars
hclustfunc <- function(x) hclust(x, method="complete")
distfunc <- function(x) dist(x,method="euclidean")
heatmap.2(as.matrix(mydata),dendrogram="row",trace="none", margin=c(8,9), hclust=hclustfunc,distfun=distfunc);
我得到以下热图:
我想做的是将聚类的结果保存到一个文本文件中 但行名称按聚类结果排序:
mpg cyl disp hp drat wt qsec vs am gear carb
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.9 1 1 4 1
Porsche 914-2 26 4 120.3 91 4.43 2.14 16.7 0 1 5 2
Datsun 710 22.8 4 108 93 3.85 2.32 18.61 1 1 4 1
....
Maserati Bora 15 8 301 335 3.54 3.57 14.6 0 1 5 8
有什么方法可以做到?
我在上面代码的 heatmap.2
行之后尝试了这个,但没有给出
结果如我所愿。
write.table(mydata, "~/Desktop/tmp.txt",row.names = TRUE, quote=FALSE)
heatmap.2
函数不会对您的原始数据执行任何操作。如果您保存调用 heatmap.2
函数的结果,它将 return 可用于对数据重新排序的行树状图。例如
hh<-heatmap.2(as.matrix(mydata),dendrogram="row",
trace="none", margin=c(8,9),
hclust=hclustfunc,distfun=distfunc);
sorted <- mydata[match(rev(labels(hh$rowDendrogram)), rownames(mydata)), ]
#view result
head(sorted)
# mpg cyl disp hp drat wt qsec vs am gear carb
# Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
# Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
# Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
# Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
# Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
# Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
然后你可以使用 write.table