knitr::opts_chunk$set(echo = TRUE)
Shiny Gadgets could be created for most any task you might do during data loading, cleaning, manipulation, and visualization.
library(shiny) library(miniUI) myGadgetFunc <- function(inputValue1, inputValue2) { ui <- miniPage( ## Define layout, inputs, outputs, etc. ) server <- function(input, output, session) { # Define reactive expressions, outputs, etc. # And then stopApp(returnValue) } runGadget(ui, server) }
ui <- miniPage( gadgetTitleBar("My Gadget"), miniContentPanel( # Define layout, inputs, outputs ) )
server <- function(input, output, session) { # Define reactive expressions, outputs, etc. # When the Done button is clicked, return a value observeEvent(input$done, { returnValue <- ... stopApp(returnValue) }) }
regexTest = function(pattern="night", x = "We can turn day into night with this Gadget", replace = "day") { ui = miniPage( gadgetTitleBar("Basic gsub tester"), miniContentPanel( textInput("text","Text:", x), textInput('pattern','Pattern to replace:', pattern), textInput("replacement","Text to substitute", replace), textOutput("out") ) ) server = function(input, output, session) { output$out = renderText( gsub(pattern = input$pattern, replace = input$replacement, x = input$text) ) observeEvent(input$done, { returnValue <- input$pattern stopApp(returnValue) }) } runGadget(ui, server) }
ggbrush <- function(dframe, xvar, yvar, viewer=paneViewer()) { ui <- miniPage( gadgetTitleBar("Drag to select points"), miniContentPanel( # The brush="brush" argument means we can listen for # brush events on the plot using input$brush. plotOutput("plot", height = "100%", brush = "brush") ) ) server <- function(input, output, session) { # Render the plot output$plot <- renderPlot({ # Plot the data with x/y vars indicated by the caller. ggplot(dframe, aes_string(xvar, yvar)) + geom_point() }) # Handle the Done button being pressed. observeEvent(input$done, { # Return the brushed points. See ?shiny::brushedPoints. stopApp(brushedPoints(dframe, input$brush)) }) } runGadget(ui, server) }
shinyFunction = function() { require(shiny) server <- function(input, output) { output$distPlot <- renderPlot({ hist(rnorm(input$obs), col = 'darkgray', border = 'white') }) } ui <- fluidPage( sidebarLayout( sidebarPanel( sliderInput("obs", "Number of observations:", min = 10, max = 500, value = 100) ), mainPanel(plotOutput("distPlot")) ) ) shinyApp(ui = ui, server = server) }
shinyFunction = function() { runApp(system.file("MyPackage","shinyAppDir")) }
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.