2016-10-20 12 views
1

Dateオブジェクトを必要とするRから関数を呼び出したい。私はRpy2を使ってこの関数を呼び出すのに苦労しています。ここで rpy2を使ってPythonからRに日付を渡す方法

は例です:私は最後の行が例外をスローし

import datetime as dt 
import rpy2.robjects.packages as rpackages 
base = rpackages.importr("base") 
d = dt.date(year=2009, month=8, day=17) 
base.format(date, format = "%d/%m/%y") 

のpythonからこの関数を呼び出したい今日付

d <- as.Date("2009-08-17") 
format(d, "%d/%m/%Y") 
[1] "17/08/2009" 

を取るR機能

NotImplementedError: Conversion 'py2ri' not defined for objects of type '<class 'datetime.datetime'>' 

どのように私はPythonから日付を渡すことができます任意のアイデアを期待しているRで機能する任意のアイデア(xxx)の引数ですか?

fyi - 私は日付文字列の形式を変換する純粋なpythonコードを探していません。 rpy2経由で日付を渡す方法を知りたい

答えて

3

現在、as.Date()関数は実行されておらず、base.as_Date()と翻訳されています。これを行い、文字列にフォーマットすることを検討してください。しかし、最初にPython datetimeオブジェクトを文字列にフォーマットします。strfttime

import datetime as dt 
import rpy2.robjects.packages as rpackages 
import rpy2.robjects as robjects 

base = rpackages.importr("base") 
pyDate = dt.date(year=2009, month=8, day=17) 

rDate = base.as_Date(pyDate.strftime("%Y-%m-%d")) 
rStr = base.format(rDate, format = "%d/%m/%Y") 

print(robjects.StrVector(rStr).r_repr()) 
# "17/08/2009" 
関連する問題