使用RPy捕获R控制台输出

时间:2013-11-17 02:09:06

标签: python r stdout rpy2

我正在使用CRAN的texreg软件包来获取R统计信息的LaTeX摘要。此程序包提供将输出打印到控制台或文件的选项。我想将它分配给一个python变量确保没有任何内容被打印出来(我通过pythonTeX将它传递给一个文档,这是一个更长的故事)。

我上传了一个包含远程数据的完整示例(如果您想要重现它)here

归结为

latex = texreg.texreg(mylm)

并使用乳胶获得输出,仅用于乳胶。

我尝试了很多方法

latex = texreg.texreg(test1, file='/dev/null', single_row=False)

%pylab inline
%load_ext rmagic 

%Rpush test1
%R latex = texreg(test1, single_row=False)
在前面提到的笔记本中,他们都失败了:(

2 个答案:

答案 0 :(得分:0)

修改代码中的几行似乎对我来说在IPython笔记本中起作用

texreg.texreg(test1, file='temp1.tex', single_row=False)
latex = open('temp1.tex').read()
print latex

答案 1 :(得分:0)

我设法做到了......最终......以下是一个非常强硬的解决方案:

import os
import sys
f = open(os.devnull, 'w')
sys.stdout = f
texreg.texreg(lin_model)
sys.stdout = sys.__stdout__
latex = open('lm-temp.tex').read()
remove('lm-temp.tex')
return latex

如果你能想出更好的解决方案,请说出来。