R用for循环保存图(保存直方图有效)
Posted
技术标签:
【中文标题】R用for循环保存图(保存直方图有效)【英文标题】:R save plots with for loop (saving histograms works) 【发布时间】:2016-11-11 13:47:55 【问题描述】:我想用 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,我会得到:
情节列表
list()
有人可以帮忙吗?谢谢!
【问题讨论】:
代码的第三行:p <- plot(matrix ...
。否则p
未知。 BTW:为什么这么复杂?结合两个循环...
是的 p 没有定义
@J_F 你是对的,这就是我实际所做的。我仍然有同样的错误。
@J_F 是的,你是对的。我想我可以结合这两个循环。
【参考方案1】:
请尝试提供datamatrix
,或至少提供head(datamatrix)
。
与在 cmets 中一样,您可以这样做是一个循环,并且不需要将对象保存到中间列表。
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()
【讨论】:
以上是关于R用for循环保存图(保存直方图有效)的主要内容,如果未能解决你的问题,请参考以下文章