How to hide or disable in-function printed message

后端 未结 3 1897
情深已故
情深已故 2020-12-01 08:04

Suppose I have a function such as:

ff <- function(x) {
  cat(x, \"\\n\")
  x^2}

And run it by:

y <- ff(5)
# 5 
y
# [1         


        
相关标签:
3条回答
  • 2020-12-01 08:32

    You should also check out purrr::quietly().

    ff <- function(x) {
      cat(x, "\n")
      x^2
    }
    
    purrr::quietly(ff)(7)$result
    #> [1] 49
    

    Created on 2020-09-10 by the reprex package (v0.3.0)

    0 讨论(0)
  • 2020-12-01 08:33

    You can use capture.output with invisible

    > invisible(capture.output(y <- ff(2)))
    > y
    [1] 4
    

    or sink

    > sink("file")
    > y <- ff(2)
    > sink()
    > y
    [1] 4
    
    0 讨论(0)
  • 2020-12-01 08:43

    Here's a nice function for suppressing output from cat() by Hadley Wickham:

    quiet <- function(x) { 
      sink(tempfile()) 
      on.exit(sink()) 
      invisible(force(x)) 
    } 
    

    Use it like this:

    y <- quiet(ff(5))
    

    Source: http://r.789695.n4.nabble.com/Suppressing-output-e-g-from-cat-td859876.html

    0 讨论(0)
提交回复
热议问题