[英]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.