Tambahkan filter tahun: input penggeser numerik
Input penggeser dapat digunakan untuk tujuan yang mirip dengan input numerik, karena keduanya memberi pengguna cara untuk memilih sebuah angka.
Jika nilai awal yang diberikan (argumen value) pada penggeser adalah satu angka, maka penggeser akan digunakan untuk memilih satu angka. Namun, jika nilai awalnya adalah vektor berisi dua angka, maka penggeser akan digunakan untuk memilih dua angka alih-alih hanya satu nilai.
Kita sudah melihat bahwa input yang berbeda dapat memiliki argumen yang berbeda. Akan sulit untuk mengingat tepatnya argumen apa yang digunakan setiap input. Satu-satunya cara untuk mengetahui argumen yang dapat Anda gunakan dengan fungsi input tertentu adalah dengan melihat dokumentasi atau berkas bantuannya.
Latihan ini adalah bagian dari kursus
Studi Kasus: Membangun Aplikasi Web dengan Shiny di R
Petunjuk latihan
- Tambahkan
sliderInput()ke UI dengan ID "years" dan label "Years" (baris 14).- Tetapkan nilai minimum ke tahun paling awal dalam himpunan data, dan nilai maksimum ke tahun paling akhir dalam himpunan data.
- Secara bawaan, titik batas penggeser harus diatur ke 1977 dan 2002, sehingga hanya data di antara dua tahun ini (inklusif) yang ditampilkan.
- Tambahkan kode pada server sehingga tahun yang dipilih pada input digunakan untuk mensubset data
gapminder, dan hanya catatan dalam rentang tahun tersebut yang akan ditampilkan (baris 28).
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textInput("title", "Title", "GDP vs life exp"),
numericInput("size", "Point size", 1, 1),
checkboxInput("fit", "Add line of best fit", FALSE),
radioButtons("color", "Point color",
choices = c("blue", "red", "green", "black")),
selectInput("continents", "Continents",
choices = levels(gapminder$continent),
multiple = TRUE,
selected = "Europe"),
# Add a slider selector for years to filter
___("years", ___, ___, ___, ___)
),
mainPanel(
plotOutput("plot")
)
)
)
# Define the server logic
server <- function(input, output) {
output$plot <- renderPlot({
# Subset the gapminder data by the chosen years
data <- subset(gapminder,
continent %in% input$continents &
year >= ___$years[1] & year <= ___$years[2])
p <- ggplot(data, aes(gdpPercap, lifeExp)) +
geom_point(size = input$size, col = input$color) +
scale_x_log10() +
ggtitle(input$title)
if (input$fit) {
p <- p + geom_smooth(method = "lm")
}
p
})
}
shinyApp(ui = ui, server = server)