2012-04-12 140 views
1

我想從一個矩陣編碼for循環來創建一系列pdf上的圖。這裏是我的代碼:for循環與R中的矩陣

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

你打我吧賈斯汀:)我會保持我的太,因爲我建議一個lapply解決方案。 +1 – 2012-04-12 18:54:22

+0

謝謝@賈斯丁,這是可笑的容易修復:) – GodinA 2012-04-12 18:56:35

+0

@TylerRinker你的是更好(和更漂亮)的解決方案。希望海報能夠窺視它! – Justin 2012-04-12 19:09:32

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

有用@Tyler Rinker! – GodinA 2012-04-12 18:57:36