Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python rpy2:如何抑制R输出_Python_R_Rpy2 - Fatal编程技术网

Python rpy2:如何抑制R输出

Python rpy2:如何抑制R输出,python,r,rpy2,Python,R,Rpy2,在pythonshell中,并在发出以下命令时使用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调用。因此,将输出重定向到标准输

在pythonshell中,并在发出以下命令时使用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")')

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

在此,考虑R的<代码>捕获。输出< /COD>返回输出字符串。

...
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))

谢谢@Parfait,但是为什么这比做
robjects.r('sink(/dev/null'))
要好呢?因为我不关心
打印
输出?r docs使用的类比是
capture.output()
sink()
with()
attach()
。我的猜测是,这些比较中的前一个不会像后一个那样影响全局环境,但仅限于特定的调用行,因此前后的行不会受到影响。我得到一个错误:
module'base'没有属性“capture\u output”
@eotp,实际上来自utils not base包(都是R标准库的一部分)。请参见编辑。@冻糕谢谢!