Learn R Programming

shiny (version 1.5.0)

renderPrint: Printable Output

Description

Makes a reactive version of the given function that captures any printed output, and also captures its printable result (unless base::invisible()), into a string. The resulting function is suitable for assigning to an output slot.

Usage

renderPrint(
  expr,
  env = parent.frame(),
  quoted = FALSE,
  width = getOption("width"),
  outputArgs = list()
)

Arguments

expr

An expression that may print output and/or return a printable R object.

env

The environment in which to evaluate expr.

quoted

Is expr a quoted expression (with quote())? This is useful if you want to save an expression in a variable.

width

The value for [options][base::options]('width').

outputArgs

A list of arguments to be passed through to the implicit call to verbatimTextOutput() when renderPrint is used in an interactive R Markdown document.

Details

The corresponding HTML output tag can be anything (though pre is recommended if you need a monospace font and whitespace preserved) and should have the CSS class name shiny-text-output.

The result of executing func will be printed inside a utils::capture.output() call.

Note that unlike most other Shiny output functions, if the given function returns NULL then NULL will actually be visible in the output. To display nothing, make your function return base::invisible().

See Also

renderText() for displaying the value returned from a function, instead of the printed output.

Examples

Run this code
# NOT RUN {
isolate({

# renderPrint captures any print output, converts it to a string, and
# returns it
visFun <- renderPrint({ "foo" })
visFun()
# '[1] "foo"'

invisFun <- renderPrint({ invisible("foo") })
invisFun()
# ''

multiprintFun <- renderPrint({
  print("foo");
  "bar"
})
multiprintFun()
# '[1] "foo"\n[1] "bar"'

nullFun <- renderPrint({ NULL })
nullFun()
# 'NULL'

invisNullFun <- renderPrint({ invisible(NULL) })
invisNullFun()
# ''

vecFun <- renderPrint({ 1:5 })
vecFun()
# '[1] 1 2 3 4 5'


# Contrast with renderText, which takes the value returned from the function
# and uses cat() to convert it to a string
visFun <- renderText({ "foo" })
visFun()
# 'foo'

invisFun <- renderText({ invisible("foo") })
invisFun()
# 'foo'

multiprintFun <- renderText({
  print("foo");
  "bar"
})
multiprintFun()
# 'bar'

nullFun <- renderText({ NULL })
nullFun()
# ''

invisNullFun <- renderText({ invisible(NULL) })
invisNullFun()
# ''

vecFun <- renderText({ 1:5 })
vecFun()
# '1 2 3 4 5'

})
# }

Run the code above in your browser using DataLab