使用循环在R中绘制绘图

时间:2016-09-19 12:12:45

标签: r

我只是想知道如何使用循环来浏览一些模型并为它们绘制图形?

我有很多年龄组的混合模型,每个年龄组我都有2,3,4,5个组件模型。我使用以下方法命名它们:

  ag1.mix2
  ag1.mix3
  ag1.mix4
  ag1.mix5
  ag2.mix2
  ag2.mix3
  ag2.mix4
  ag2.mix5

依此类推(ag1 =年龄组1; mix2 = 2种混合物成分)。

现在,我试图为每个模型绘制图形,我试图通过使用类似的东西来简化代码:

for(i in 1:11) {
  emf(paste("Mixture Components by Age Group ", i, ".emf"))
  par(mfrow = c(2, 2), oma = c(0, 0, 2, 0))
  for(j in 2:5) {
    plot(cat("ag", i, ".mix", j, sep = "", "\n"), which = 2, las = 1, breaks = 100, 
         main2 = paste(j, "components"))    
  }
  title(main = paste("Age Group", agegp[i]), outer = TRUE)
  dev.off()
}

然而,它没有起作用,R抱怨:

 Error in plot.window(...) : need finite 'xlim' values

如果我这样做:

plot(ag1.mix2, which = 2, las = 1, breaks = 100, main2 = "2 Comonents")

然后它工作正常。但是,要使用4x11型号,我希望我可以使用循环!

任何建议都将不胜感激。

凯文

PS - 使用mixtools包装混合模型。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用get

喜欢

for(j in 2:5) {
data_to_plot=get(paste0("ag", i, ".mix", j ))
    plot(data_to_plot, which = 2, las = 1, breaks = 100, 
         main2 = paste(j, "components"))    
  }

小工作示例:

data1=1:10
data2=2:20

for (i in 1:2){
  png(paste0("plot_",i,".png"))
  data_to_plot=get(paste0("data", i))
  plot(data_to_plot)
  dev.off()
}