rpy2:如何抑制R输出

时间:2017-06-04 15:24:43

标签: python r rpy2

在Python shell中,当我发出以下命令时使用rpy2

In [93]: x = robjects.r.bfast(data, h=0.1, season="none", max_iter=1)
[1]
 "No seasonal model will be fitted!"

我得到了这个不理想的输出

[1]
 "No seasonal model will be fitted!"

有没有办法抑制此输出?我想把这个调用包装成一个函数,然后再调用api调用。因此,将输出重定向到stdout是不可取的。

换句话说,怎么做rpy2

sink("/dev/null")

有没有比

更好的方法
robjects.r('sink("/dev/null")')

1 个答案:

答案 0 :(得分:1)

显然,bfast方法有条件地将该消息打印到控制台,没有包装器不打印,这是不可取的代码。通过拉取请求联系开发人员。

根据这个solution,考虑R的capture.output返回输出的字符串。

...
from rpy2.robjects.packages import importr

utils = importr('utils')    
bfast = importr('bfast')

# NOTICE R's PERIODS CHANGED TO UNDERSCORE TO FIT PYTHON'S OBJECT MODEL
x = utils.capture_output(bfast(data, h=0.1, season="none", max_iter=1))