У меня есть процесс, который я хотел бы повторить известное количество раз, но с уловкой. Первая итерация должна быть с исходным набором данных, затем следующая должна быть с результатом первого, следующего с результатом второго, ...Loop или Vectorize this function for Phylogenetic Tree Clade Dropping
Некоторые фон: набор данных имеет тип phylo
, поэтому функция append
внутри цикла for
не имеет для меня смысла. Ниже приведена фактический код:
library(ape)
library(geiger)
clade.dropper <- function(phy, drop.tips) {
new.phy <- drop.tip(phy, tips(phy, drop.tips[1]))
new.phy <- drop.tip(new.phy, tips(new.phy, drop.tips[2]))
new.phy <- drop.tip(new.phy, tips(new.phy, drop.tips[3]))
new.phy <- drop.tip(new.phy, tips(new.phy, drop.tips[4]))
new.phy <- drop.tip(new.phy, tips(new.phy, drop.tips[5]))
new.phy
}
Я хотел бы быть в состоянии предотвратить жесткое кодирование выше, и каким-то образом, цикл его для данного списка, содержащих имена кончика филогенетического дерева падать.
Спасибо!
, если вы используете обезьяну, drop.tip уже делает это: new.phy <- drop.tip (PHY, clade.nums) – jeremycg
Как правило, вы должны включать в себя строка 'library (your_package)' в вопросе и, возможно, тег для пакета (если он существует), чтобы люди могли узнать, о чем вы говорите. (Я не знаю никаких объектов 'phylo' или каких-либо функций' drop.tip'.) – Frank
Кажется, что это не работает, поскольку drop.tip требует, чтобы метки меток отбрасывались. Я попытался использовать предоставленный вами код, и полученный объект phylo не изменился. Таким образом, я привел к функции tips(), чтобы получить метки меток для каждой заинтересованной клады. –