2012-04-12 19 views
1

私は、行列からforループをコード化して、pdf上に一連のプロットを作成しようとしています。ここに私のコードは次のとおりです。for R with matrix in loop

pdf("/Users/Aurelz/Documents/Shark Research/DFO-data/Arctic/plots.pdf", height=8, width=6.5) 
par(mfrow=c(3,2), mar=c(0.8,0.8,0.8,0.8), oma=c(2,2,1,1.5), mgp=c(0.5,0.5,0)) 

for (i in c("JUL","AUG","SEPT","OCT","NOV","DEC")){ 
    plot(Thorny.Lmm[["r","i"]], Thorny.Lmm[["Lmm","i"]], type="l") 
    abline(h=0, lty=2) 
    title(main="Thorny skate in i") 
} 
dev.off() 

>Error in Thorny.Lmm[["r", "i"]] : subscript out of bounds 

Thorny.Lmmは、次の形式の行列である:

> Thorny.Lmm 
    JUL   AUG   SEPT  OCT   NOV   DEC   
r Numeric,513 Numeric,513 Numeric,513 Numeric,513 Numeric,513 Numeric,513 
Kmm Numeric,513 Numeric,513 Numeric,513 Numeric,513 Numeric,513 Numeric,513 
Lmm Numeric,513 Numeric,513 Numeric,513 Numeric,513 Numeric,513 Numeric,513 

私が最初にうまく働いたこのコードを、試してみました。

plot(Thorny.Lmm[["r","JUL"]], Thorny.Lmm[["Lmm","JUL"]], type="l") 
abline(h=0, lty=2) 
title(main="Thorny JUL") 

私はそれを修正するためにかなり簡単だと確信していますが、私はちょうど(今までとにかく)、それのまわりで私の頭を取得することはできません!

ありがとうございました!

答えて

3

あなたは、変数iの値ではなく、引用符で囲まれた文字列"i"たい:あなたは私のオフに引用符を残してみてください

for (i in c("JUL","AUG","SEPT","OCT","NOV","DEC")){ 
    plot(Thorny.Lmm[["r",i]], Thorny.Lmm[["Lmm",i]], type="l") 
    abline(h=0, lty=2) 
    title(main=paste("Thorny skate in", i)) 
} 
dev.off() 
+0

あなたは私にそれを打つジャスティン:)私は恋人を提案するように私も私のままにしますソリューションも同様です。 +1 –

+0

ありがとう@ジャスティン、それは修正するのがばかげて簡単でした:) – GodinA

+0

@TylerRinker Yoursははるかに良い(ときれいな)ソリューションです。うまくいけば、ポスターはそれを覗いて見てください! – Justin

3

を:

for (i in c("JUL","AUG","SEPT","OCT","NOV","DEC")){ 
    plot(Thorny.Lmm[["r",i]], Thorny.Lmm[["Lmm", i]], type="l") 
    abline(h=0, lty=2) 
    title(main=paste("Thorny skate in", i)) 
} 
dev.off() 

以上のRっぽいの方法で、

plotter <- function(month){ 
    plot(Thorny.Lmm[["r",month]], Thorny.Lmm[["Lmm",month]], type="l") 
    abline(h=0, lty=2) 
    title(main=paste("Thorny" month)) 
} 

lapply(colnames(Thorny.Lmm), plotter) 
+0

便利な@タイラーリンカー! – GodinA