rpy2:如何抑制R输出

问题描述 投票:0回答:1

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

?

python r rpy2
1个回答
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))
© www.soinside.com 2019 - 2024. All rights reserved.