我想用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()
有人可以帮忙吗?谢谢!
答案 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()
}