簡體   English   中英

從數據集中選擇隨機的 phylog.netic 樹,運行分析並嘗試保存結果

[英]Selecting random phylogenetic trees from data set, runing analysis and trying to save results

我想計算數據集中幾個隨機 phylog.netic 樹的莫蘭指數。

作為結果,我想要一個列表:Moran 指數計算的值和為給定的 Moran 指數計算(在每個循環中)選擇的樹。

我需要知道哪棵樹用於運行 Moran 索引。

我能夠獲得隨機樹的 Moran 值,但是我無法以任何方式保存在每個循環中選擇的隨機樹。

由於我的數據集很大,我創建了以下示例:

library(ape)

x <- rmtree(20, 20)
names(x) <- paste("t", 1:10, sep = "")
var <- as.data.frame(matrix(rnorm(20),nrow=20))
nams <- data.frame(paste0("t",1:20,sep=""))
var_list <- cbind(nams,var)
colnames(var_list) <- c("names","variable")
var_list1 <- var_list$variable
names(var_list1) <- c(var_list[,1])

# Loop to select a random tree and run the Moran index

tr <- function(x, var_list1){
  resulist <- as.list(1:15) 
# treelist <- as.list(as.phylo(x[[i]])) #### not working
  for(i in 1:15){
    tutreer <- sample(x,size=1)[[1]]
    inr <- 1/cophenetic(tutreer)
    diag(inr) <- 0
    mran <- Moran.I(var_list1,inr,scaled = TRUE)
    mran
    
    resulist[[i]] <- list(obs=mran$observed,expect=mran$expected,
                            sd=mran$sd,pval=mran$p.value)
    # treelist[[i]] <- list(tutreer) #### Here, not working
    
  }
  return(resulist)
# return(treelist)
}

tr(x,var_list1)

關於如何保存在每個循環中選擇(並用於計算索引)的樹的任何想法?

為什么不在每次迭代時將它添加到resulist[[i]]中?:

resulist[[i]] <- list(obs=mran$observed,expect=mran$expected,
                          sd=mran$sd,pval=mran$p.value, tree=tutreer)

或者,返回整個采樣樹,如下所示:

tr <- function(x, var_list1){
  resulist <- as.list(1:15) 
  for(i in 1:15){
    sampled_tree <- sample(x,size=1)
    inr <- 1/cophenetic(sampled_tree[[1]])
    diag(inr) <- 0
    mran <- Moran.I(var_list1,inr,scaled = TRUE)
    resulist[[i]] <- c(mran, list(tree = sampled_tree))
  }
  return(resulist)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM