앱에 구조 추가하기
Shiny에서 레이아웃은 요소들을 원하는 위치에 배치해 앱에 구조를 부여하는 데 사용돼요.
sidebarLayout() 함수로 만드는 사이드바 레이아웃은 왼쪽의 작은 사이드바와 오른쪽의 큰 메인 패널로 이루어진 기본적인 두 열 구조를 제공합니다.
사이드바 레이아웃 함수는 두 가지 인수를 받습니다: sidebarPanel()과 mainPanel(). 각 패널에는 텍스트/HTML 요소를 임의로 섞어 넣을 수 있으며, 이는 fluidPage() 안에서 이러한 요소들을 섞어 사용하는 방식과 유사해요.
이 연습은 강의의 일부입니다
사례 연구: R의 Shiny로 웹 애플리케이션 만들기
연습 안내
지금 있는 앱에 사이드바 레이아웃을 추가해, 입력은 왼쪽에, 결과물은 메인 패널에 오도록 만드세요. 구체적으로는 다음을 수행합니다.
- Shiny 애플리케이션의 UI를 정의하세요.
- 페이지에 사이드바 레이아웃을 추가하세요.
- 레이아웃에 사이드바 패널을 추가하고, 그 안에 입력과 텍스트를 배치하세요.
- 레이아웃에 메인 패널을 추가하고, 그 안에 플롯과 테이블을 배치하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Load the shiny package
library(shiny)
# Define UI for the application
ui <- ___(
# Add a sidebar layout to the application
___(
# Add a sidebar panel around the text and inputs
___(
h4("Plot parameters"),
textInput("title", "Plot title", "Car speed vs distance to stop"),
numericInput("num", "Number of cars to show", 30, 1, nrow(cars)),
sliderInput("size", "Point size", 1, 5, 2, 0.5)
),
# Add a main panel around the plot and table
___(
plotOutput("plot"),
tableOutput("table")
)
)
)
# Define the server logic
server <- function(input, output) {
output$plot <- renderPlot({
plot(cars[1:input$num, ], main = input$title, cex = input$size)
})
output$table <- renderTable({
cars[1:input$num, ]
})
}
# Run the application
shinyApp(ui = ui, server = server)