renderPrint() prints the result of expr, while renderText() pastes it
together into a single string. renderPrint() is equivalent to print();
renderText() is equivalent to cat(). Both functions capture all other
printed output generated while evaluating expr.
renderPrint() is usually paired with verbatimTextOutput();
renderText() is usually paired with textOutput().
renderPrint(
expr,
env = parent.frame(),
quoted = FALSE,
width = getOption("width"),
outputArgs = list()
)
renderText(
expr,
env = parent.frame(),
quoted = FALSE,
outputArgs = list(),
sep = " "
)An expression to evaluate.
The parent environment for the reactive expression. By default,
this is the calling environment, the same as when defining an ordinary
non-reactive expression. If expr is a quosure and quoted is TRUE,
then env is ignored.
If it is TRUE, then the quote()ed value of expr
will be used when expr is evaluated. If expr is a quosure and you
would like to use its expression as a value for expr, then you must set
quoted to TRUE.
Width of printed output.
A list of arguments to be passed through to the implicit
call to verbatimTextOutput() or textOutput() when the functions are
used in an interactive RMarkdown document.
A separator passed to cat to be appended after each
element.
For renderPrint(), note the given expression returns NULL then NULL
will actually be visible in the output. To display nothing, make your
function return invisible().
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.
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'
})
#> [1] "foo"
#> [1] "1 2 3 4 5"