Python 如何用rpy2绘制回归线

Python 如何用rpy2绘制回归线,python,r,rpy2,Python,R,Rpy2,在R中,可以使用以下命令绘制回归线: res=lm(height~age) abline(res) 按照 如何使用rpy2执行相同的操作?我试过了 from rpy2 import robjects r = robjects.r r.png('test.png') x = range(10) y = range(10) r.plot(x, y) r.abline(r.lm(x, y)) 但遭到rpy2的投诉: Error in formula.default(object, env = ba

在R中,可以使用以下命令绘制回归线:

res=lm(height~age)
abline(res)
按照

如何使用rpy2执行相同的操作?我试过了

from rpy2 import robjects
r = robjects.r
r.png('test.png')
x = range(10)
y = range(10)
r.plot(x, y)
r.abline(r.lm(x, y))
但遭到rpy2的投诉:

Error in formula.default(object, env = baseenv()) : invalid formula
Traceback (most recent call last):
  File "plot_ratio_price.py", line 34, in <module>
    r.abline(r.lm(x, y))
  File "/Library/Python/2.7/site-packages/rpy2/robjects/functions.py", line 82, in __call__
    return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/rpy2/robjects/functions.py", line 34, in __call__
    res = super(Function, self).__call__(*new_args, **new_kwargs)
rpy2.rinterface.RRuntimeError: Error in formula.default(object, env = baseenv()) : invalid formula
公式中出现错误。默认值(对象,env=baseenv()):公式无效 回溯(最近一次呼叫最后一次): 文件“plot\u ratio\u price.py”,第34行,在 r、 abline(r.lm(x,y)) 文件“/Library/Python/2.7/site packages/rpy2/robjects/functions.py”,第82行,在__ 返回super(SignatureTranslatedFunction,self)。\调用(*args,**kwargs) 文件“/Library/Python/2.7/site packages/rpy2/robjects/functions.py”,第34行,在__ res=super(函数,自).\uuuuuuuuu调用(*新参数,**新参数) rpy2.rinterface.rrontimeerror:公式中有错误。默认值(对象,env=baseenv()):公式无效
有什么提示吗?谢谢

继@joran的评论之后,Rpy2要求您为公式提供一个特殊对象。文档中说这个类。因此,在最后一行(调用
r.abline
)之前,您需要创建一个公式对象,并将其传递给
lm()
调用

顺便说一下,您的问题代码看起来足够接近<代码> RPY2<代码>示例,您可以考虑使用它作为模板:

import array
from rpy2.robjects import IntVector, Formula
from rpy2.robjects.packages import importr
stats = importr('stats')

x = IntVector(range(1, 10))
y = IntVector(range(1, 10))

fmla = Formula('y ~ x')
env = fmla.environment
env['x'] = x
env['y'] = y

fit = stats.lm(fmla)

由于错误消息说您传递了一个无效的公式,可能您应该向
r.lm
传递一个公式,如所述?