R保存带有for循环的图(保存直方图有效)

时间:2016-11-11 13:47:55

标签: r plot save

我想用for循环保存300个图,但不知何故代码在控制台中工作但没有保存图。我总是收到以下错误:

Error in plot_list[[i]] : subscript out of bounds

如果我绘制直方图,一切正常。

这是我的代码:

plot_list = list()
for (i in 1:300) {
  p <-plot(matrix(1:15000, nrow = 15000, ncol = 50), datamatrix[1:15000,var_list[i,1]:var_list[i,2]], main = layer_list[[1]][i], xlab = "r [micrometer]")
  plot_list[[i]] = p
}

for (i in 1:300) {
  png(paste("plot", i, ".png", sep = ""), width = 1200, height = 750)
  plot(plot_list[[i]], main = substitute(paste('Layer ', a), list(a=layer_list[[1]][i])), xlab = "r [micrometer]", ylab = " Frequency")
  dev.off()
}

如果我看一下plot_list,我会得到:

  

plot_list

list()

有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:2)

请尝试提供datamatrix,或至少提供head(datamatrix)

在评论中,你可以做到这一点,不需要将对象保存到中间列表。

for (i in 1:300) {  
  png(paste("plot", i, ".png", sep = ""), width = 1200, height = 750)

  plot(matrix(1:15000, nrow = 15000, ncol = 50),
        datamatrix[1:15000, var_list[i, 1]:var_list[i, 2]],
        main = sprintf("Layer %s", layer_list[[1]][i]),
        xlab = "r [micrometer]",
        ylab = "Frequency")

 dev.off()
}