在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")')
答案 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))