chart_Series 在条件为 FALSE 的函数中调用时不绘制

chart_Series does not plot when called in function with condition that evaluates to FALSE

我是 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,那么我的函数就不会绘制图表(否则就可以了)。这是为什么?

我不确定为什么会发生这种情况,但这是解决方法。在函数中放两次chart_Series,当addAdx为TRUE和FALSE时

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)

如果您不使用 return R 函数 return 最新的计算值。

如果 addAdx 设置为 FALSE,则函数 return 无效。

此代码解决了您的问题:

  myPlot = function(ts, addAdx = TRUE) {
  p <- chart_Series(ts);

  if (addAdx) {
   p <- add_TA(ADX(HLC(ts))$ADX)  
  }

  p #return(p)
}