2016-11-11 27 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

3行目: 'P < - プロット(行列...' 'そうp'が知られていないところで:なぜこれほど複雑なループの両方を組み合わせ... –

+1

はいPが定義されていません。? – Ansjovis86

+0

@ J_Fあなたは正しいです、それは私が実際にやっていることです。私はまだ同じエラーがあります。 – Fabi

答えて

2

datamatrix、または少なくともhead(datamatrix)を入力してください。

コメントのように、これは1つのループであり、オブジェクトを中間リストに保存する必要はありません。あなたのコードの

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() 
} 
関連する問題