2013-12-20 71 views
2

我對R有一個相當奇怪的問題。我想繪製一些股票圖表。一切正常,除了布林帶 - BBands。 - 情節只包含系列,不包含樂隊。這隻有當我在循環中繪製時纔會發生。當我試圖在沒有循環的情況下繪製它時,就像我的代碼最後一樣,它沒問題。R - 繪製循環和循環之間的差異

編輯//我剛剛注意到它也發生在Aroon,SMI,CVL和MACD上。

library(quantmod) 
library(TTR) 

getSymbols(Symbols="AAPL", src="yahoo") 
th=chartTheme('white'); 

funkcje=c('BBands','ChAD','CMF','MFI','CCI','MACD','RSI','ROC','TDI','Aroon','SMI','ADX','ATR','ChVol','CLV','DPO','EMV','KST','SAR','Volatility','WPR','ZigZag'); 

#everything works fine except for i=1 - BBands 
for(i in 1:length(funkcje)){ 
    fun=get(paste0('add',funkcje[i])); 
    cat(funkcje[i],'\n') 
    pdf(paste0(funkcje[i],'.pdf')) 
    chartSeries(AAPL, type="line", theme=th) 
    fun(); 
    dev.off(); 
} 

#this works fine 
fun=get(paste0('add',funkcje[1])) 
pdf(paste0(funkcje[1],'.pdf')) 
chartSeries(AAPL, type="line", theme=th) 
fun() 
dev.off() 
+0

這是一個很好的問題。我也遇到過這個問題,但不知道如何解決它。 –

回答

2

我認爲這是懶惰評估的問題。嘗試將您的電話打包到fun中,以print進行強制評估。

for(i in 1:length(funkcje)){ 
    fun=get(paste0('add',funkcje[i])); 
    cat(funkcje[i],'\n') 
    pdf(paste0(funkcje[i],'.pdf')) 
    chartSeries(AAPL, type="line", theme=th) 
    print(fun()) 
    dev.off(); 
} 
+0

這爲我解決了它 –

0

使用chart_Series()來碰到類似的問題。直到我將chart_Series()放入其他空的plot()函數中,纔會在循環內部進行繪製。如果在這裏完成同樣的事情,BBands會顯示出來。我通過移動實際chartSeries()呼叫循環之外降低到avoide我的圖形設備上邊距問題的研究,並減少閃爍:

getSymbols(Symbols="AAPL", src="yahoo") 
th=chartTheme('white'); 

funkcje=c('BBands','ChAD','CMF','MFI','CCI','MACD'); 
chartSeries(AAPL, type="line", theme=th) 
#everything works fine except for i=1 - BBands 
for(i in 1:length(funkcje)){ 
    fun=get(paste0('add',funkcje[i])); 
    plot(fun()) 
} 

我希望這可以幫助其他人希望得到他們的quantmod/while循環實際上陰謀一些東西。