![](/img/trans.png)
[英]Unable to understand return code of pcregrep when executed from python script
[英]How to return multiple objects from R script executed in Python
因此,我努力使用rpy2
包在R和Python之间集成一些工作流。
例如,假设我正在尝试运行一个在R中进行线性回归的Python脚本,并且我想返回该脚本的所有元素(实际上,我正在尝试做比这复杂得多的事情)。
我在Python中执行以下命令(调用R;这假定您已安装rpy2
):
import rpy2.robjects as ro
test = ro.r('''
# Load in data
df <- mtcars
# Run regression
out = lm(formula='mpg ~ cyl + hp + wt',data=df)
''')
现在呢? 我有一个问题:
如何从结果中提取各种元素? 在R中,它们的输出将是out$coefficients
和out$residuals
等。我知道有关于此的文档,但是我有点迷失了。 理想情况下,我希望元素使用有用的格式,例如pandas数据框或索引列表等。
df
怎样? robjects.r()
似乎只是保存您最后提供的所有内容,而丢弃其他所有内容。 我想我可以解决这个问题,但这并不理想。
与2相关:有更好的方法吗? 通常,如果有人可以为这种事情提出“最佳实践”,那将会很有帮助,因为我确信有很多人对使用Python感兴趣,但是偶尔会有一个非常自定义的函数需要使用R,但是他们不想看上这种集成。 使用Pythonic输入参数调用R函数的方法也许很棒。
问题1:如何从结果中提取各种元素?
答案1:运行R脚本后:
test = ro.r(your_R_script)
您可以使用此代码打印出test
对象中的所有names
和values
。
# iterate on names and values
# be careful output is v long
for n,v in test.items():
print(n)
print(v)
要列出所有可用names
,请运行以下代码:
test.names
输出:
StrVector with 12 elements.
'coeffici... 'residuals' 'effects' 'rank' ... 'xlevels' 'call' 'terms' 'model'
要打印“残差”的值,请运行以下命令:
test[test.names.index('residuals')]
问题2:df会怎样?
回答2:在您删除它之前,它在R环境中仍然可用。 您可以运行简单的R代码来检查:
ro.r('''
# View dataframe
df
''')
Q.3:有更好的方法吗?
答案3 :(无答案。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.