У меня есть матрица парных расстояний 74x74 разностей SNP, в которой первый столбец и строка соответствуют номеру изолята, например:
26482RR 25638 26230 25689RR 25954
26482RR 0 8 0 6 0
25638 8 0 8 14 8
26230 0 8 0 6 0
25689RR 6 14 6 0 6
25954 0 8 0 6 0
M = structure(c(0L, 8L, 0L, 6L, 0L, 8L, 0L, 8L, 14L, 8L, 0L, 8L,
0L, 6L, 0L, 6L, 14L, 6L, 0L, 6L, 0L, 8L, 0L, 6L, 0L), .Dim = c(5L,
5L), .Dimnames = list(c("26482RR", "25638", "26230", "25689RR",
"25954"), c("26482RR", "25638", "26230", "25689RR", "25954")))
Я хотел бы преобразовать эту матрицу в таблицу SNPразличия для каждой пары изолятов, например, так:
Col Row SNP differences
26482RR 25638 8
26482RR 26230 0
26482RR 25689RR 6
26482RR 25954 0
25638 26230 8
25638 25689RR 14
25638 25954 8
...
, чтобы построить эти данные и сопоставить их с другими матрицами.Я новичок в R, поэтому после небольшого поиска я решил применить следующий код:
st1076 <- read.csv("st1076.csv", header=TRUE, sep=";")
m1 <- as.matrix(st1076)
m1 <- m1[upper.tri(m1)] <- NA
m1_melted <- reshape2:::melt.matrix(m1, na.rm = TRUE)
colnames(m1_melted) <- c("Col","Row","SNP differences")
Однако, используя этот код, я получаю в "Col" нумерацию каждого изолята по порядку:вхождение (1, 2, 3, 4 ...) и не является соответствующим изолирующим номером:
Col Row SNP differences
2 X26482RR 8
3 X26482RR 0
4 X26482RR 6
Из того, что я видел в других связанных вопросах, использование melt.matrix
должно решить эту проблему, но это нея не работаю
Может кто-нибудь помочь мне понять, почему это произошло?Есть ли у вас какие-либо предложения по его преодолению?