设置当前子图

时间:2012-04-27 07:08:39

标签: r quantmod

我无法为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()

1 个答案:

答案 0 :(得分: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而不是curon,那么它可以正常工作:

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)
}