我正在尝试循环执行anova的数据帧。我的循环似乎有一个错误,因为在最后,我只剩下第一次迭代后的值(i=0)。我尝试过在循环、i=0、i=1中手动单步执行,似乎可以工作,但当我运行整个循环,然后查看数据帧时,只有第一次迭代的结果。
sum_tab.sig<-data.frame(Df=as.numeric(),Sum.Sq=as.numeric(),Mean.Sq=as.numeric(),Fval=as.numeric(),Pval=as.numeric(),OTU=as.character())
for (i in 0:ncol(b_Genus_abund)) {
aov.ex <- aov(b_Genus_abund[,5+i]~b_Genus_abund$Location*b_Genus_abund$Bean*b_Genus_abund$Fungi*b_Genus_abund$Insect)
## summary of the anova given as a list
sum_tab<-summary(aov.ex)[[1]]
temp.sig<-sum_tab[sum_tab[,"Pr(>F)"]<0.1,]
temp.sig<-transform(temp.sig,OTU=colnames(b_Genus_abund)[5+i])
sum_tab.sig<-rbind(sum_tab.sig,temp.sig)
sum_tab.sig<-sum_tab.sig[!is.na(sum_tab.sig[,1]),]
return(sum_tab.sig)
}任何帮助我们都将不胜感激
发布于 2018-02-03 01:42:00
for循环不会return,因为它不是一个函数,所以您的代码基本上不会工作,并且在第一次迭代后会出错。尝试不使用返回语句:
for (i in 0:ncol(b_Genus_abund)) {
aov.ex <- aov(b_Genus_abund[,5+i]~b_Genus_abund$Location*b_Genus_abund$Bean*b_Genus_abund$Fungi*b_Genus_abund$Insect)
## summary of the anova given as a list
sum_tab<-summary(aov.ex)[[1]]
temp.sig<-sum_tab[sum_tab[,"Pr(>F)"]<0.1,]
temp.sig<-transform(temp.sig,OTU=colnames(b_Genus_abund)[5+i])
sum_tab.sig<-rbind(sum_tab.sig,temp.sig)
sum_tab.sig<-sum_tab.sig[!is.na(sum_tab.sig[,1]),]
}https://stackoverflow.com/questions/48587746
复制相似问题