rpy2:如何抑制 R 输出
rpy2: how to suppress R output
在 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 调用。因此,将输出重定向到标准输出是不可取的。
也就是说,在rpy2
中如何做:
sink("/dev/null")
有没有比
更好的方法
robjects.r('sink("/dev/null")')
?
显然,bfast 方法有条件地将该消息打印到控制台,没有包装器不打印,这是不可取的代码。通过拉取请求联系开发人员。
根据这个solution,考虑R的capture.output
输出的returns个字符串。
...
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))
在 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 调用。因此,将输出重定向到标准输出是不可取的。
也就是说,在rpy2
中如何做:
sink("/dev/null")
有没有比
更好的方法robjects.r('sink("/dev/null")')
?
显然,bfast 方法有条件地将该消息打印到控制台,没有包装器不打印,这是不可取的代码。通过拉取请求联系开发人员。
根据这个solution,考虑R的capture.output
输出的returns个字符串。
...
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))