Domanda

default heatmap.2 a dist per il calcolo della matrice di distanza e hclust per il clustering. Qualcuno ora come posso impostare dist di utilizzare il metodo euclideo e hclust utilizzare il metodo baricentro? Ho fornito un esempio di codice compilabile soffietto. Ho provato: distfun = dist (method = "euclidea"), ma questo non funziona. Tutte le idee?

library("gplots")
library("RColorBrewer")

test <- matrix(c(79,38.6,30.2,10.8,22,
81,37.7,28.4,9.7,19.9,
82,36.2,26.8,9.8,20.9,
74,29.9,17.2,6.1,13.9,
81,37.4,20.5,6.7,14.6),ncol=5,byrow=TRUE)
colnames(test) <- c("18:0","18:1","18:2","18:3","20:0")
rownames(test) <- c("Sample 1","Sample 2","Sample 3", "Sample 4","Sample 5")
test <- as.table(test)
mat=data.matrix(test)

heatmap.2(mat,
dendrogram="row",
Rowv=TRUE,
Colv=NULL,
distfun = dist,
hclustfun = hclust,
xlab = "Lipid Species",
ylab = NULL,
colsep=c(1),
sepcolor="black",
key=TRUE,
keysize=1,
trace="none",
density.info=c("none"),
margins=c(8, 12),
col=bluered
)
È stato utile?

Soluzione

Guardando il codice per heatmap.2 Sono abbastanza sicuro che il default è quello di utilizzare dist, ed è di default è a sua volta di utilizzare distanze euclidee.

Il motivo per il vostro tentativo di passare distfun = dist(method = 'euclidean') non ha lavoro è che distfun (e hclustfun) dovrebbero essere semplicemente nome di funzioni. Quindi, se si vuole default alter e passare gli argomenti è necessario scrivere una funzione wrapper in questo modo:

heatmap.2(...,hclustfun = function(x) hclust(x,method = 'centroid'),...)

Come ho già detto, io sono abbastanza certo che heatmap.2 sta usando distanze euclidee per impostazione predefinita, ma una soluzione simile può essere utilizzato per modificare la funzione di distanza utilizzata:

heatmap.2(...,distfun = function(x) dist(x,method = 'euclidean'),...)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top