2012-04-27 16 views
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() 
+2

こんにちは。完全に再現可能な最小限の例は、問題の診断に役立ちます。また、 '?add_TA'(実際には' chart_Series'を参照しています)の文書には、「実験的な(読み込み:アルファ)使用には注意が必要です。 – BenBarnes

答えて

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) 

(ちなみに、これはあなたの質問に問題がなければ、データはランダムになる可能性があります)。

更新:使用時に問題を再現しました関数、私は回避策を見つけました(私は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) 
} 
+0

thx Darren。私はcuronをグローバル変数として設定しても関数ではないとうまく動作するので、環境と関係するのはsthだと思います。 – SilverSpoon

+0

@ SilverSpoonはい、そうです、私はそれを再現できます(これを表示するためにあなたの質問を編集したばかりです)。私はそれがquantmodバグだと思います。 'add_TA 'と入力すると(括弧なし)、ソースを見ることができます。 'plot_ta()'はそこに動的に作成されます。 'as.expression()'はそれを呼び出すために使われます。これは明らかにその引数が評価されないことを意味します。私はバグがどこにあるのだろうと思います。 –

+0

@ SilverSpoonちょうど私の答えを原油の解決策で更新しました。 –

関連する問題