首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R构建df in循环拉出pvalue

R构建df in循环拉出pvalue
EN

Stack Overflow用户
提问于 2018-02-03 01:15:59
回答 1查看 19关注 0票数 0

我正在尝试循环执行anova的数据帧。我的循环似乎有一个错误,因为在最后,我只剩下第一次迭代后的值(i=0)。我尝试过在循环、i=0、i=1中手动单步执行,似乎可以工作,但当我运行整个循环,然后查看数据帧时,只有第一次迭代的结果。

代码语言:javascript
复制
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)
}

任何帮助我们都将不胜感激

EN

回答 1

Stack Overflow用户

发布于 2018-02-03 01:42:00

for循环不会return,因为它不是一个函数,所以您的代码基本上不会工作,并且在第一次迭代后会出错。尝试不使用返回语句:

代码语言:javascript
复制
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]),]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48587746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档