mirror of
https://github.com/rstudio/shiny.git
synced 2026-01-15 01:48:11 -05:00
* - Convert all example apps to single file app.R file - Make relevant updates to Readmes to match up with app.R structure - Add color to plots (RStudio blue) - In 04_mpg example: Show outliers by default, as opposed to hide, since this is more routine - In 06_tabsets and 08_html examples: Don't name random data vector "data" - Add extensive comments to app.R files and use consistent formatting of comments across examples - In 09_upload example: Use req() to check for NULL entry * add news entry summarizing changes * use true RStudio blue, #75AADB * Conver shinyApp calls at the end to drop argument name in examples 3-11, except for the custom HTML example. Kept them in for examples 1&2 for completeness in first exporuse to function. * Pull news items that got added before this PR was merged * Update comment for shinyApp function -- it creates an app object, doesn't run the app
93 lines
2.4 KiB
R
93 lines
2.4 KiB
R
library(shiny)
|
|
|
|
# Define UI for random distribution app ----
|
|
ui <- fluidPage(
|
|
|
|
# App title ----
|
|
titlePanel("Tabsets"),
|
|
|
|
# Sidebar layout with input and output definitions ----
|
|
sidebarLayout(
|
|
|
|
# Sidebar panel for inputs ----
|
|
sidebarPanel(
|
|
|
|
# Input: Select the random distribution type ----
|
|
radioButtons("dist", "Distribution type:",
|
|
c("Normal" = "norm",
|
|
"Uniform" = "unif",
|
|
"Log-normal" = "lnorm",
|
|
"Exponential" = "exp")),
|
|
|
|
# br() element to introduce extra vertical spacing ----
|
|
br(),
|
|
|
|
# Input: Slider for the number of observations to generate ----
|
|
sliderInput("n",
|
|
"Number of observations:",
|
|
value = 500,
|
|
min = 1,
|
|
max = 1000)
|
|
|
|
),
|
|
|
|
# Main panel for displaying outputs ----
|
|
mainPanel(
|
|
|
|
# Output: Tabset w/ plot, summary, and table ----
|
|
tabsetPanel(type = "tabs",
|
|
tabPanel("Plot", plotOutput("plot")),
|
|
tabPanel("Summary", verbatimTextOutput("summary")),
|
|
tabPanel("Table", tableOutput("table"))
|
|
)
|
|
|
|
)
|
|
)
|
|
)
|
|
|
|
# Define server logic for random distribution app ----
|
|
server <- function(input, output) {
|
|
|
|
# Reactive expression to generate the requested distribution ----
|
|
# This is called whenever the inputs change. The output functions
|
|
# defined below then use the value computed from this expression
|
|
d <- reactive({
|
|
dist <- switch(input$dist,
|
|
norm = rnorm,
|
|
unif = runif,
|
|
lnorm = rlnorm,
|
|
exp = rexp,
|
|
rnorm)
|
|
|
|
dist(input$n)
|
|
})
|
|
|
|
# Generate a plot of the data ----
|
|
# Also uses the inputs to build the plot label. Note that the
|
|
# dependencies on the inputs and the data reactive expression are
|
|
# both tracked, and all expressions are called in the sequence
|
|
# implied by the dependency graph.
|
|
output$plot <- renderPlot({
|
|
dist <- input$dist
|
|
n <- input$n
|
|
|
|
hist(d(),
|
|
main = paste("r", dist, "(", n, ")", sep = ""),
|
|
col = "#75AADB", border = "white")
|
|
})
|
|
|
|
# Generate a summary of the data ----
|
|
output$summary <- renderPrint({
|
|
summary(d())
|
|
})
|
|
|
|
# Generate an HTML table view of the data ----
|
|
output$table <- renderTable({
|
|
d()
|
|
})
|
|
|
|
}
|
|
|
|
# Create Shiny app ----
|
|
shinyApp(ui, server)
|