대륙 선택기 추가: select input
사용자가 선택할 수 있는 옵션이 많을 때는 라디오 버튼이 화면을 많이 차지해서 적합하지 않을 수 있어요. 셀렉트 입력(일명 '드롭다운 목록')은 목록에서 하나를 고르게 한다는 점에서 라디오 버튼과 비슷하지만, 더 컴팩트한 방식으로 사용할 수 있어요. 셀렉트 입력은 모든 옵션을 스크롤 가능한 목록으로 보여 주므로 선택지가 매우 많아도 활용할 수 있습니다.
라디오 버튼과 마찬가지로 셀렉트 입력에도 choices와 selected 매개변수가 있어요. 여기에 더해, 셀렉트 입력에는 multiple 인자가 있어서 TRUE로 설정하면 사용자가 둘 이상의 값을 선택할 수 있습니다.
이전 연습 문제의 Shiny 앱 코드를 약간 수정하여 제공했습니다.
이 연습은 강의의 일부입니다
사례 연구: R의 Shiny로 웹 애플리케이션 만들기
연습 안내
- UI에 ID가 "continents"이고 라벨이 "Continents"인
selectInput()을 추가하고, 기본 대륙은 "Europe"으로 설정하세요.- 목록의 선택지는 gapminder 데이터셋에 존재하는 모든 대륙이어야 합니다.
- 사용자가 여러 대륙을 동시에 선택할 수 있도록 허용하세요.
- 서버 코드에 gapminder 데이터셋을 서브셋팅하여(23행) 선택된 대륙의 데이터만 표시되도록 코드를 추가하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
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")),
# Add a continent dropdown selector
___(___, ___,
choices = levels(___),
multiple = ___,
selected = ___)
),
mainPanel(
plotOutput("plot")
)
)
)
# Define the server logic
server <- function(input, output) {
output$plot <- renderPlot({
# Subset the gapminder dataset by the chosen continents
data <- subset(gapminder,
___ %in% ___$continents)
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)