Переименовать 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)
}
Другие вопросы по тегам