76 lines
1.9 KiB
R
76 lines
1.9 KiB
R
library(shiny)
|
|
library(datasets)
|
|
|
|
# Data pre-processing ----
|
|
# Tweak the "am" variable to have nicer factor labels -- since this
|
|
# doesn't rely on any user inputs, we can do this once at startup
|
|
# and then use the value throughout the lifetime of the app
|
|
mpgData <- mtcars
|
|
mpgData$am <- factor(mpgData$am, labels = c("Automatic", "Manual"))
|
|
|
|
|
|
# Define UI for miles per gallon app ----
|
|
ui <- fluidPage(
|
|
|
|
# App title ----
|
|
titlePanel("Miles Per Gallon"),
|
|
|
|
# Sidebar layout with input and output definitions ----
|
|
sidebarLayout(
|
|
|
|
# Sidebar panel for inputs ----
|
|
sidebarPanel(
|
|
|
|
# Input: Selector for variable to plot against mpg ----
|
|
selectInput("variable", "Variable:",
|
|
c("Cylinders" = "cyl",
|
|
"Transmission" = "am",
|
|
"Gears" = "gear")),
|
|
|
|
# Input: Checkbox for whether outliers should be included ----
|
|
checkboxInput("outliers", "Show outliers", TRUE)
|
|
|
|
),
|
|
|
|
# Main panel for displaying outputs ----
|
|
mainPanel(
|
|
|
|
# Output: Formatted text for caption ----
|
|
h3(textOutput("caption")),
|
|
|
|
# Output: Plot of the requested variable against mpg ----
|
|
plotOutput("mpgPlot")
|
|
|
|
)
|
|
)
|
|
)
|
|
|
|
# Define server logic to plot various variables against mpg ----
|
|
server <- function(input, output) {
|
|
|
|
# Compute the formula text ----
|
|
# This is in a reactive expression since it is shared by the
|
|
# output$caption and output$mpgPlot functions
|
|
formulaText <- reactive({
|
|
paste("mpg ~", input$variable)
|
|
})
|
|
|
|
# Return the formula text for printing as a caption ----
|
|
output$caption <- renderText({
|
|
formulaText()
|
|
})
|
|
|
|
# Generate a plot of the requested variable against mpg ----
|
|
# and only exclude outliers if requested
|
|
output$mpgPlot <- renderPlot({
|
|
boxplot(as.formula(formulaText()),
|
|
data = mpgData,
|
|
outline = input$outliers,
|
|
col = "#75AADB", pch = 19)
|
|
})
|
|
|
|
}
|
|
|
|
# Create Shiny app ----
|
|
shinyApp(ui, server)
|