suppress messages displayed by “print” instead of “message” or “warning” in R

后端 未结 2 2017
自闭症患者
自闭症患者 2020-12-05 07:00

Many R packages I work with involve functions that give all their messages and warnings through commands to print() calls rather than commands to message() or warning(). I\

相关标签:
2条回答
  • 2020-12-05 07:31

    Well, those packages are buggy to start with. Use of print() for anything but side-effect in print implementations is a serious mistake.

    That said, you can simply use capture.output() to collect the output from such code instead of printing it. So for the above it would be

    capture.output(x <- silly_developer_function(...))
    print(x)
    
    0 讨论(0)
  • 2020-12-05 07:41

    Another hacky way is to override the default print function. It will affect some functionality, such as printing the body of functions, but objects with their own print methods still get returned as usual.

    print <- function(...) {}
    
    > silly_developer_function("a")
    [1] "a"
    > silly_developer_function(1)
    [1] 1
    
    0 讨论(0)
提交回复
热议问题