如何使用rpy2从Python传递日期到R

时间:2016-10-20 23:21:22

标签: python r rpy2

我想从R调用一个需要Date对象的函数。我很难用Rpy2来调用这个函数。

这是一个例子:一个采用日期的R函数

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

现在我想从python

调用这个函数
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")

最后一行抛出异常

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

我有什么想法可以将日期从python传递给R中的函数,期望as.Date(xxx)参数?

fyi - 我不是在寻找纯python代码来转换日期字符串的格式。我想知道如何通过rpy2

传递日期

1 个答案:

答案 0 :(得分: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"