我对R很好,所以也许我错过了一些关于功能的概念。但这是我的例子,我感兴趣为什么它会这样?
require(quantmod);
myPlot = function(ts, addAdx = TRUE) {
chart_Series(ts);
if (addAdx) {
add_TA(ADX(HLC(ts))$ADX)
}
}
getSymbols("DIA", src='yahoo');
myPlot(DIA, addAdx = FALSE)
如果我将addAdx参数设置为false,那么我的函数不会绘制图表(否则很好)。那是为什么?
答案 0 :(得分:1)
我不确定为什么会这样,但这是解决方法。当chart_Series
为TRUE且为FALSE时,将addAdx
两次放入函数中。
myPlot = function(ts, addAdx = TRUE) {
if (addAdx) {
chart_Series(ts)
add_TA(ADX(HLC(ts))$ADX)
} else {
chart_Series(ts)
}
}
getSymbols("DIA", src='yahoo');
myPlot(DIA, addAdx = FALSE)
myPlot(DIA, addAdx = TRUE)
答案 1 :(得分:1)
如果您不使用return,R函数将返回最新的计算值。
如果addAdx设置为FALSE,则该函数返回void。
此代码解决了您的问题:
myPlot = function(ts, addAdx = TRUE) {
p <- chart_Series(ts);
if (addAdx) {
p <- add_TA(ADX(HLC(ts))$ADX)
}
p #return(p)
}