2016-11-11 92 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() 
}