2016-11-11 90 views
2

我想用for循环保存300个地块,但代码在控制台中工作,但不保存地块。我总是得到以下错误:R用for循环保存地块(保存直方图工作)

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() 

谁能帮助?谢谢!

+2

代码的第三行:。。?'P < - 图(矩阵...''否则是p'不知道BTW:为什么这么复杂结合这两个循环... –

+1

是P没有定义 – Ansjovis86

+0

@J_F你是对的,这就是我的实际做法,我仍然有同样的错误 – Fabi

回答

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() 
}