我对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()
答案 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();
}
答案 1 :(得分:0)
使用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循环实际绘制一些东西。