mirror of
https://github.com/rstudio/shiny.git
synced 2026-01-28 08:18:22 -05:00
95 lines
2.8 KiB
Markdown
95 lines
2.8 KiB
Markdown
|
|
|
|

|
|
|
|
The Tabsets application demonstrates using tabs to present output. To run the example type:
|
|
|
|
<pre><code class="console">> library(shiny)
|
|
> runExample("06_tabsets")
|
|
</code></pre>
|
|
|
|
#### ui.R
|
|
|
|
<pre><code class="r">library(shiny)
|
|
|
|
# Define UI for random distribution application
|
|
shinyUI(pageWithSidebar(
|
|
|
|
# Application title
|
|
headerPanel("Tabsets"),
|
|
|
|
# Sidebar with controls to select the random distribution type
|
|
# and number of observations to generate. Note the use of the br()
|
|
# element to introduce extra vertical spacing
|
|
sidebarPanel(
|
|
radioButtons("dist", "Distribution type:",
|
|
list("Normal" = "norm",
|
|
"Uniform" = "unif",
|
|
"Log-normal" = "lnorm",
|
|
"Exponential" = "exp")),
|
|
br(),
|
|
|
|
sliderInput("n",
|
|
"Number of observations:",
|
|
value = 500,
|
|
min = 1,
|
|
max = 1000)
|
|
),
|
|
|
|
# Show a tabset that includes a plot, summary, and table view
|
|
# of the generated distribution
|
|
mainPanel(
|
|
tabsetPanel(
|
|
tabPanel("Plot", plotOutput("plot")),
|
|
tabPanel("Summary", verbatimTextOutput("summary")),
|
|
tabPanel("Table", tableOutput("table"))
|
|
)
|
|
)
|
|
))
|
|
</code></pre>
|
|
|
|
#### server.R
|
|
|
|
<pre><code class="r">library(shiny)
|
|
|
|
# Define server logic for random distribution application
|
|
shinyServer(function(input, output) {
|
|
|
|
# Reactive function to generate the requested distribution. This is
|
|
# called whenever the inputs change. The output functions defined
|
|
# below then all use the value computed from this function
|
|
data <- reactive(function() {
|
|
dist <- switch(input$dist,
|
|
norm = rnorm,
|
|
unif = runif,
|
|
lnorm = rlnorm,
|
|
exp = rexp,
|
|
rnorm)
|
|
|
|
dist(as.integer(input$n))
|
|
})
|
|
|
|
# Generate a plot of the data. Also uses the inputs to build the
|
|
# plot label. Note that the dependencies on both the inputs and
|
|
# the data reactive function are both tracked, and all functions
|
|
# are called in the sequence implied by the dependency graph
|
|
output$plot <- reactivePlot(function() {
|
|
dist <- input$dist
|
|
n <- input$n
|
|
|
|
hist(data(),
|
|
main=paste('r', dist, '(', n, ')', sep=''))
|
|
})
|
|
|
|
# Generate a summary of the data
|
|
output$summary <- reactivePrint(function() {
|
|
summary(data())
|
|
})
|
|
|
|
# Generate an HTML table view of the data
|
|
output$table <- reactiveTable(function() {
|
|
data.frame(x=data())
|
|
})
|
|
})
|
|
</code></pre>
|