Pregunta

HeatMap.2 Predeterminado a DIST para calcular la matriz de distancia y Hclust H para agruparse. ¿Alguien ahora cómo puedo establecer DIST para usar el método euclidean y Hclust para usar el método centralide? Proporcioné una muestra de código compilable a continuación. Lo intenté: Distfun = Dist (Method = "Euclidean"), pero eso no funciona. ¿Algunas ideas?

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
)
¿Fue útil?

Solución

Mirando el código para heatmap.2 Estoy bastante seguro de que el valor predeterminado es usar dist, y es predeterminado es a su vez usar distancias euclidianas.

La razón por la que tu intento de pasar distfun = dist(method = 'euclidean') no funcionó es que distfun (y hclustfun) se supone que simplemente deben ser nombre de funciones. Entonces, si desea alterar los valores predeterminados y aprobar los argumentos, necesita escribir una función de envoltura como esta:

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

Como mencioné, estoy bastante seguro de que heatmap.2 está utilizando distancias euclidianas de forma predeterminada, pero se puede usar una solución similar para alterar la función de distancia utilizada:

heatmap.2(...,distfun = function(x) dist(x,method = 'euclidean'),...)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top