使用eHOF包使用R在for循环中绘图

使用eHOF包使用R在for循环中绘图,r,for-loop,plot,R,For Loop,Plot,我想使用R包eHOF运行大量(~100)个eHOF模型,生成这个包可以生成的模型图,并保存每个模型的jpeg文件。我试图使用for循环来快速完成这项工作,但我无法让它生成图形。我在R studio plots窗口中看不到任何内容,我生成的jpeg文件中没有任何内容(顺便提一下,我没有在循环中正确生成jpeg文件的名称) 要生成这些图,在循环之外没有问题,例如,如果我调用我的模型modSP,这里会发生一些事情: 您的SpeciesCodes向量的代码与HOF_Sp中的列名不同 seq_-along

我想使用R包eHOF运行大量(~100)个eHOF模型,生成这个包可以生成的模型图,并保存每个模型的jpeg文件。我试图使用for循环来快速完成这项工作,但我无法让它生成图形。我在R studio plots窗口中看不到任何内容,我生成的jpeg文件中没有任何内容(顺便提一下,我没有在循环中正确生成jpeg文件的名称)


要生成这些图,在循环之外没有问题,例如,如果我调用我的模型modSP,这里会发生一些事情:

  • 您的
    SpeciesCodes
    向量的代码与
    HOF_Sp
    中的列名不同
  • seq_-along(…)
    返回参数中每个元素的索引,而不是元素本身
  • 当类
    HOF
    的对象被传递到
    plot(…)
    时,调用
    HOF
    plot
    方法。但是你正在通过粘贴(c(HOF)),这是不可理解的
  • 您的示例不可复制,因为它没有使用您提供的数据运行(您是否尝试运行它??)。具体而言,
    HOF_Sp
    的样本是退化的,因为不存在非零值
  • 由于上面(4)的原因,我无法测试此代码,但请尝试以下方法:

    SpeciesCodes <- c("ACPE","ACRU2","ACSP2")
    for (Spp in SpeciesCodes) {
      model <- HOF(HOF_Sp[[Spp]],GDD, M=1,family=binomial, bootstrap=2, freq.limit = 100)
      jpeg(filename = (paste(("GDD_responsecurve_",Spp,".jpg"),sep="")),
           width =8.3, height = 8.3, units = "cm", pointsize = 8, bg="white", res = 800)  
      plot(model, boxp = TRUE,
           las.h = 1, onlybest = TRUE, para = TRUE,
           gam.se = FALSE, newdata = NULL, lwd=1, leg = TRUE, add=FALSE, 
           xlabel="Growing degree days", ylab="Probability")
      dev.off()
    }
    

    哈利路亚!这是可行的,除了我编辑了一点代码,所以现在:SpeciesCodes
    species<- read.csv("F:/Thesis_projects/Chapter4_climateChange/HOF/259species.csv")
    species<-as.data.frame(species)
    enviro<-read.csv("F:/Thesis_projects/Chapter4_climateChange/HOF/EnvironmentalData.csv")
    enviro<-as.data.frame(enviro)
    species_enviro<-merge(enviro, species, all.x=FALSE)
    HOF_Sp<-species_enviro[,23:25]
    GDD<-species_enviro[,19]
    library(eHOF)
    
    SpeciesCodes<-c("ACPE","ACRU2","ACSP2")
    Modx<-NULL
    for (Spp in seq_along(SpeciesCodes)){
    
      Modx[[Spp]]<-HOF(HOF_Sp[[Spp]],GDD, M=1,family=binomial, bootstrap=2, freq.limit = 100)
    
      jpeg(filename = (paste(("GDD_responsecurve_",SpeciesCodes[[Spp]],".jpg"),sep="")),
         width =8.3, height = 8.3, units = "cm", pointsize = 8, bg="white", res = 800)
    
      print(plot((paste(c(Modx[[Spp]]))), boxp = TRUE,
        las.h = 1, onlybest = TRUE, para = TRUE,
        gam.se = FALSE, newdata = NULL, lwd=1, leg = TRUE, add=FALSE, 
        xlabel="Growing degree days", ylab="Probability"))
    
       dev.off()
                                        }
    
    > head(GDD)
    [1] 996.1681 996.1681 962.0662 962.0662 945.7007 945.7007
    
       > head(HOF_Sp)
          ACMI2 ACPA ACPE
        1     0    0    0
        2     0    0    0
        3     0    0    0
        4     0    0    0
        5     0    0    0
        6     0    0    0
    
    SpeciesCodes <- c("ACPE","ACRU2","ACSP2")
    for (Spp in SpeciesCodes) {
      model <- HOF(HOF_Sp[[Spp]],GDD, M=1,family=binomial, bootstrap=2, freq.limit = 100)
      jpeg(filename = (paste(("GDD_responsecurve_",Spp,".jpg"),sep="")),
           width =8.3, height = 8.3, units = "cm", pointsize = 8, bg="white", res = 800)  
      plot(model, boxp = TRUE,
           las.h = 1, onlybest = TRUE, para = TRUE,
           gam.se = FALSE, newdata = NULL, lwd=1, leg = TRUE, add=FALSE, 
           xlabel="Growing degree days", ylab="Probability")
      dev.off()
    }