2015-11-11 4 views
0

Мне нужен довольно простой цикл, который берет каждое филогенетическое дерево из объекта multiphylo и вычисляет Ic для каждого дерева и помещает его в dataframe. извините, если это так просто, я новичок в R, и я не мог понять это!Как написать цикл для вычисления оценки для количества симуляций повторно?

library(apTreeshape) 
    library(phytools) 
    multi_trees<- pbtree(b=0.5, d=0, n=200, t=NULL, scale=NULL, 
    nsim=50, type="continuous", extant.only=TRUE) ### simulate 50 trees stored as multiphylo object 
    converted_tree <- as.treeshape(multi_trees[[nsim=1]]) ## each tree need to be converted to class treeshapes using following function 

Ic <- colless(converted_tree, norm = NULL) #And finally calculate Ic for each tree 

ответ

0

Петля проста, поэтому я предполагаю, что она сама объясняет.

library(apTreeshape) 
    library(phytools) 

    # simulate 50 trees stored as multiphylo object 
    multi_trees<- pbtree(b=0.5, d=0, n=200, t=NULL, scale=NULL, nsim=50, type="continuous", extant.only=TRUE) 

    # make data.frame for results 
    Ic <- matrix(nrow=50, ncol=2) 
    Ic <- data.frame(Ic) 
    colnames(Ic) <- c("sim", "Ic") 

    # loop 
    for (i in 1:50) { 
     converted_tree <- as.treeshape(multi_trees[[i]]) 
     Ic[i,1] <- i # get simulation number 
     Ic[i,2] <- colless(converted_tree, norm = NULL) # get Ic 
    } 

    Ic 
+0

Отлично! Спасибо @ N311V – Jack

Смежные вопросы