如何使用 rpy2 将日期从 Python 传递给 R
How to pass a date to R from Python using 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
传递日期
目前,您没有运行 as.Date()
函数,译为base.as_Date()
。考虑这样做,然后格式化为字符串。但首先将 Python 日期时间对象格式化为带有 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"
我想从 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
传递日期目前,您没有运行 as.Date()
函数,译为base.as_Date()
。考虑这样做,然后格式化为字符串。但首先将 Python 日期时间对象格式化为带有 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"