Переименовать phylo tip label
Я хочу дать виду новое имя в моем дереве класса phylo
(с использованием ape
пакет).
Я старался:
tree$tip.label["speciesX"] <- "speciesY"
Это не делать то, что я хотел. Какие-либо предложения?
1 ответ
Проблема в том, что вы не можете индексировать метки подсказок так, как вы хотите (вы хотите заменить метку подсказки, значение которой равно "ороды X", а не ту, чье имя имеет вид" вид X "); вектор метки подсказки не имеет имен). Как бы глупо это ни звучало, нужно что-то вроде tree$tip.label[tree$tip.label=="speciesX"]
определить правильное значение для замены.
Пример:
## create a tree, from ?read.tree
s <- "owls(((Strix_aluco:4.2,Asio_otus:4.2):3.1,Athene_noctua:7.3):6.3,Tyto_alba:13.5);"
cat(s, file = "ex.tre", sep = "\n")
tree.owls <- read.tree("ex.tre")
Переименовать:
tree.owls$tip.label[tree.owls$tip.label=="Asio_otus"] <- "something_else"
Вы можете написать функцию для этого, что-то вроде (не проверено!)
rename.tips <- function(phy, old_names, new_names) {
mpos <- match(old_names,phy$tip.labels)
phy$tip.labels[mpos] <- new_names
return(phy)
}