我对R有很奇怪的问题。我想绘制一些股票图表。一切正常,除了布林通道 - BBands。- 情节仅包含系列,不包含乐队。这只有在我循环绘图时才会发生。当我尝试在没有循环的情况下绘制它时,就像在我的代码末尾一样,没关系。
编辑//我刚刚注意到它也发生在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()
这是懒惰计算的问题。尝试将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();
}
使用 chart_Series()
遇到了类似的问题。只是不会在循环内绘制,直到我将chart_Series()
放在一个原本空的plot()
函数中。BBands确实显示了这里是否做了同样的事情。我减少了研究以避免图形设备上的边距问题,并通过将实际chartSeries()
调用移到循环之外来减少闪烁:
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 for/while 循环来实际绘制一些东西的人。