Xây dựng đối tượng đầu ra
Có ba quy tắc để tạo một đầu ra trong Shiny:
Tạo đối tượng bằng hàm
render*()thích hợp.Lưu kết quả của hàm render vào danh sách
output, là một tham số của hàm server. Cụ thể, lưu vàooutput$<outputId>để thay thế vị trí giữ chỗ đầu ra trong UI có ID làoutputId.Nếu đầu ra phụ thuộc vào bất kỳ giá trị input do người dùng thay đổi, bạn có thể truy cập các input đó thông qua tham số
inputcủa hàm server. Cụ thể,input$<inputId>sẽ luôn trả về giá trị hiện tại của ô nhập có ID làinputId.
Bài tập này là một phần của khóa học
Nghiên cứu tình huống: Xây dựng ứng dụng web với Shiny trong R
Hướng dẫn bài tập
Bạn được cung cấp một ứng dụng Shiny với phần UI đã hoạt động đầy đủ. Nhiệm vụ của bạn là xây dựng tất cả các đầu ra. Cụ thể:
- Tạo biểu đồ của bộ dữ liệu
carstrong vị trí giữ chỗ cho plot có ID "cars_plot" (dòng 23). - Trong đầu ra văn bản "greeting", render lời chào dạng "Hello NAME", trong đó NAME là giá trị của input name (dòng 28).
- Trong đầu ra "iris_table", hiển thị bảng gồm n hàng đầu tiên của bộ dữ liệu
iris, trong đó n là giá trị của numeric input (dòng 33).
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Load the shiny package
library(shiny)
# Define UI for the application
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textInput("name", "What is your name?", "Dean"),
numericInput("num", "Number of flowers to show data for",
10, 1, nrow(iris))
),
mainPanel(
textOutput("greeting"),
plotOutput("cars_plot"),
tableOutput("iris_table")
)
)
)
# Define the server logic
server <- function(input, output) {
# Create a plot of the "cars" dataset
output$cars_plot <- render___({
plot(cars)
})
# Render a text greeting as "Hello "
output$greeting <- ___({
paste("Hello", ___)
})
# Show a table of the first n rows of the "iris" data
___ <- ___({
data <- iris[1:input$num, ]
data
})
}
# Run the application
shinyApp(ui = ui, server = server)