Моя проблема (сегодня) заключается в следующем:
У меня есть верхняя диагональная матрица расстояний в файле ("dist.dis") в текстовом формате (созданном программой третьей части), который яхочу прочитать в R, чтобы вычислить кластерный анализ и сгенерировать дендрограмму:
0.36364 0.36364 0.27273 0.81818 0.54545 0.63636 0.36364 0.45455
0.18182 0.63636 0.63636 0.36364 0.63636 0.54545 0.09091
0.45455 0.63636 0.18182 0.63636 0.54545 0.27273
0.81818 0.63636 0.81818 0.27273 0.72727
0.45455 0.18182 0.63636 0.54545
0.45455 0.54545 0.27273
0.81818 0.54545
0.45455
В отдельном текстовом файле ("dist.nam") у меня также есть список имен объектов, среди которыхрасстояния были вычислены:
COOKO-A
COOKO-B
COOKO-C
COOKO-D
COOKO-E
COOKO-F
COOKO-G
COOKO-H
COOKO-I
Вот мой код R для чтения вышеуказанной матрицы и генерации дендрограммы:
mat <- matrix(0, 9, 9)
mat[row(mat) >= col(mat)] <- scan("dist.dis")
hc <- hclust(as.dist(mat), method="average")
ppi <- 100
png("clus.png", width=6*ppi, height=6*ppi, res=ppi)
plot(as.dendrogram(hc), xlab="Distance", ylab="", main="UPGMA dendrogram", horiz=TRUE, edgePar=list(col="blue", lwd=3))
dev.off()
Этот код работает и генерирует нижеприведенную дендрограмму:
Однако я хочу, чтобы названия объектов (а не их номера) были на кончиках дендрограммы. Чтобы добиться этого, я попробовал код ниже:
names <- scan("dist.nam", what="character")
df.dist <- as.dist(mat)
df.dist <- as.matrix(df.dist, labels=TRUE)
colnames(df.dist) <- names
rownames(df.dist) <- names
hc <- hclust(as.dist(mat), method="average")
Но затем я получил ужасную ошибку: «Ошибка в том, что (is.na (n) || n> 65536L) stop (» размер не может бытьNA не превышает 65536 "): пропущенное значение там, где требуется TRUE / FALSE".
Может ли кто-нибудь помочь мне?