3

我无法为 add_TA 函数(quantmod 包)设置当前子图。

curon = 2

add_TA(x, type = "l",col = "blue", lwd = 2, on=curon)

(在子图 2 上添加一条线)

R给我这个错误:

Error in plot_ta(x = current.chob(), ta = get("x"), on = curon, taType = NULL,  : 
 object 'curon' not found.

命令:

add_TA(x, type = "l",col = "blue", lwd = 2, on=2) 

虽然工作正常。

注意:该问题仅在函数中使用时出现,而不是在全局范围内时出现。这是一个完整的例子:

library(quantmod)

test=function(){
x=xts(runif(10),Sys.Date()+1:10)
z=1/x
chart_Series(x)
add_TA(x, type = "l",col = "green", lwd = 2)    #OK
add_TA(z, type = "l",col = "blue", lwd = 2, on=2)   #OK
curon = 2;add_TA(z, type = "l",col = "red", lwd = 2, on=curon)  #FAILS
}

test()
4

1 回答 1

3

我认为您在未显示的代码中一定有错字,因为它对我有用:

library(quantmod)
x=xts(runif(10),Sys.Date()+1:10)
z=1/x

chart_Series(x)
add_TA(x, type = "l",col = "green", lwd = 2)
curon = 2
add_TA(z, type = "l",col = "blue", lwd = 2, on=curon)

(顺便说一句,这就是人们所说的“完全可重现的最小示例”的意思;您可以复制并粘贴到新的 R 会话中。除非对您的问题很重要,否则数据可以是随机的。)

更新:在使用函数时重现了问题,我确实找到了一种解决方法(我认为这是一个 quantmod 错误)。如果你命名你的变量on而不是curonthen 它可以工作:

library(quantmod)

test=function(){
x=xts(runif(10),Sys.Date()+1:10)
z=1/x
chart_Series(x)
add_TA(x, type = "l",col = "green", lwd = 2) 
on=2;add_TA(z, type = "l",col = "blue", lwd = 2, on=on)
}
于 2012-04-29T00:22:14.760 回答