2016-12-04 8 views
0

私はR結果をPythonで再現しようとしています。次のRコードは動作します:rpy2を使ってR関数を使ってpandasデータフレームを渡す

library("TTR") 
library("zoo") 
library("xts") 
library("quantmod") 
getSymbols("^GSPC",from = "2014-01-01", to = "2015-01-01") 
dataf = GSPC[,c("GSPC.High", "GSPC.Low", "GSPC.Close")] 
result = CCI(dataf, n=20, c=0.015) 

ではなく、次のPythonコード:

from datetime import datetime 
from rpy2.robjects.packages import importr 
TTR = importr('TTR') 
import pandas_datareader as pdr 
from rpy2.robjects import pandas2ri 
pandas2ri.activate() 

GSPC = pdr.get_data_yahoo(symbols='^GSPC', start=datetime(2014, 1, 1), end=datetime(2015, 1, 1)) 
dataf = GSPC[['High', 'Low', 'Close']] 
result = TTR.CCI(dataf, n=20, c=0.015) 

TTR.CCIを使用しているとき、私は取得エラーが最後の行で発生します。返されたトレースバックとエラーは次のとおりです。

Traceback (most recent call last): 
File "svm_strat_test_oliver.py", line 30, in <module> result = TTR.CCI(dataf, n=20, c=0.015) 
File "/usr/local/lib/python2.7/site-packages/rpy2/robjects/functions.py", line 178, in __call__ 
return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs) 
File "/usr/local/lib/python2.7/site-packages/rpy2/robjects/functions.py", line 106, in __call__ 
res = super(Function, self).__call__(*new_args, **new_kwargs) 
rpy2.rinterface.RRuntimeError: Error in `[.data.frame`(center, beg:NROW(x)) : undefined columns selected 
+1

トレースバックのないエラーは、完全なトレースバックよりも役立たないことがよくあります。また、何が起こっているのかわからない場合は、ネストされた関数呼び出しを1つのライナーで分解してみてください。各機能が期待どおりに動作しているかどうかを簡単に検査できます。たとえば、 'dataf = GSPC [['High'、 'Low'、 'C​​lose']]'を実行し、 'dataf'で' TTR.CCI() 'を呼び出します。 – lgautier

+0

@lgautier私はトレースバックを追加し、1ライナーを分解しました。 –

+1

エラーメッセージによると、rpy2はpandasデータフレームと何をするべきか分かりません。この質問の回答を確認してください:http://stackoverflow.com/questions/30922213/minimal-example-of-rpy2-regression-using-pandas-data-frame – lgautier

答えて

0

Rコードであなたのdata.frameは、実際には「XTS」「動物園」は、あなただけのPythonコードで1に変換する必要がありますオブジェクトです:

rzoo = importr('zoo') 
datazoo = zoo.as_zoo_xts(dataf) 
result = TTR.CCI(datazoo, n=20, c=0.015) 
関連する問題