Я хотел бы построить две филогении друг против друга в R, используя пакет ape
. Одно дерево имеет 40 узлов, и один имеет 26 узлов:Участок филогенетических деревьев лицом к лицу со ссылками в R
library(ape)
tree1 <- rtree(40)
tree2 <- rtree(26)
cophyloplot
графики функций этих лицом к лицу с заданными связями.
У меня возникли проблемы с указанием ссылок.
Обратите внимание, что в моих фактических файлах дерева nexus
метки меток являются текстом (и я не уверен, как их изменить на цифры, если необходимо ...).
Ссылки должны быть следующими:
Если в файле tree1
связующей, кончик метки последовательностей являются 1-40. В файле nexus метки меток 1-26. Тогда ссылки должны быть:
a <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40)
b <- c(14,1,4,1,9,12,2,10,6,3,13,5,14,15,18,19,19,7,14,9,10,11,25,22,21,16,23,24,26,17,1,12,12,21,15,16,21,8,20,21)
association <- cbind(a, b)
(т.е. последовательность 1 в tree1
связана с последовательностью 14 в tree2
)
Итак, я использовать что-то вроде этого, чтобы построить деревья:
cophyloplot(tree1, tree2, assoc=association,length.line=4, space=28, gap=10, rotate=TRUE)
И рассчитать матрицу расстояний:
dist.topo(tree1, tree2, method = "PH85")
Я не совсем уверен где я ошибаюсь. Любая помощь будет оценена!
спасибо !! Я получаю следующую ошибку: 'Ошибка в decx [i] <- strwidth (x $ tip.label [lsa [x $ tip.label == assoc [i, 1]]]): замена имеет длину 0 Поэтому я попробовал 'tree1 $ tip.label <- (1:40) tree2 $ tip.label <- (1:26)' – user2861089