Under the hood, shinyobjects
parses your code and moves around the arguments of reactive and rendered objects so that you can interact with them from the global environment. While not required, this workflow works best with a static input
list that shinyobjects
can help create. You can read more about the benefits of creating a dummy input
list here
The main function, load_reactive_objects()
takes the following steps:
can parse .Rmd
files, apps with a server.R
file, or files using shinyServer()
, runApp()
, or shinyApp()
keep library()
, load()
, and assignment calls (<-
or =
), everything else is discarded
rewrite the expressions:
reactive(x = ...)
, the x
argument is moved to the body of a function. For eventReactive(event, valueExpr = ...)
it uses the valueExpr
argument. Thus
r
reactive_df <- reactive({
mtcars %>%
head(input$n)
})
becomes
r
reactive_df <- function() {
mtcars %>%
head(input$n)
}
Now that it is a function, you can view and manipulate reactive_df()
for reactiveValues()
x <- reactiveValues(n = input$n)
becomes
x <- list(n = input$n)
* for output
assignments
* output$x <- renderPlot(expr)
becomes
output$x <- recordPlot(expr)
* for all other output
assignments, the expr
arguments are directly assigned
output$text <- renderText(paste("there are", input$n, "observations))
becomes
output$text <- (paste("there are", input$n, "observations))
evaluate the modified expressions into the specified environment, usually, the global environment
load_reactive_objects()
has options to restart your R session and/or clear out your environment
There are two other functions:
convert_selection()
does a shorter version of these steps using the code highlighted in the source pane
view_ui()
works with UI components. It takes either the html output in the console or selected code in the source pane and runs a shiny app of just that object.Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.