4

forecastrpy2を使用してRのパッケージを使用しようとしています。rpy2 でリストを時系列に変換する方法がわからなかったので、パンダの時系列でもうまくいくと考えました。

from rpy2.robjects.packages import importr
from rpy2.robjects import r
fore = importr("forecast")
from pandas import *

data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
s = Series(data)

f = fore(s, 5, level = c(80,95))

実行fすると、次のエラーが返されます。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'c' is not defined

forecastエラーが pandas 時系列の使用によるものか、R のパッケージを使用しようとする際の構文の誤りによるものかはわかりません。

編集:私はそれを自分で解決しました。興味のある人のための正しいコードは次のとおりです。

from rpy2.robjects.packages import importr
from rpy2.robjects import r
import rpy2.robjects.numpy2ri as rpyn
forecast = importr("forecast")

rcode = 'k = as.numeric(list(1, 2, 3, 4, 5, 6, 7, 8, 9))' #I just copied the contents of data in
r(rcode)
rcode1 = 'j <- ts(k)'
r(rcode1)
rcode2 = 'forecast(j, 5, level = c(80,95))'

x = r(rcode2)[1]
vector=rpyn.ri2numpy(x) #Converts from Float Vector to an array
lst = list(vector) #Converts the array to a list.
4

1 に答える 1

1

エラーメッセージを読みましたか?

NameError: name 'c' is not defined

そのエラーはどこから来たのですか?

f = fore(s, 5, level = c(80,95))

Pythonコードはどれが正しいですか?

Python には関数はありませんc。R 関数はありますが、その時点では R ではなく Python にいます。

試してください(これはテストされていません):

f = fore(s, 5, level = [80,95])

Python の角括弧を使用して Python リスト オブジェクトを作成します。これはベクトルとして R に渡される場合があります。

また、これはうまくいかないと思います。ドキュメントを読むimportrと、パッケージへの参照を取得し、ドット表記を使用してパッケージ内の関数を呼び出すことがわかります。あなたがする必要がありますfore.thingYouWantToCall(whatever)

于 2012-11-10T08:38:39.517 に答える