Ngữ cảnh phản ứng (Reactive contexts)
Giá trị phản ứng (reactive values) là các cấu trúc đặc biệt trong Shiny; bạn sẽ không gặp chúng ở các phần khác của R. Vì vậy, chúng không thể dùng trong bất kỳ đoạn mã R nào; giá trị phản ứng chỉ có thể được truy cập bên trong một ngữ cảnh phản ứng (reactive context).
Đó là lý do mọi biến phụ thuộc vào một giá trị phản ứng đều bắt buộc phải được tạo bằng hàm reactive(), nếu không bạn sẽ gặp lỗi. Bản thân server của Shiny không phải là một ngữ cảnh phản ứng, nhưng hàm reactive(), hàm observe(), và tất cả các hàm render*() thì có.
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 hai ô nhập số, num1 và num2, và một đầu ra văn bản. Nhiệm vụ của bạn là:
- Trong một biến phản ứng tên
my_sum, tính tổng của hai ô nhập số (dòng 10). - Trong một biến phản ứng tên
my_average, tính giá trị trung bình của hai ô nhập (dòng 14). - Trong đầu ra văn bản, hiển thị giá trị trung bình đã tính bằng cách sử dụng các biến phản ứng (dòng 23).
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.
ui <- fluidPage(
numericInput("num1", "Number 1", 5),
numericInput("num2", "Number 2", 10),
textOutput("result")
)
server <- function(input, output) {
# Calculate the sum of the inputs
my_sum <- reactive({
input$num1 + ___
})
# Calculate the average of the inputs
my_average <- ___({
my_sum() / 2
})
output$result <- renderText({
paste(
# Print the calculated sum
"The sum is", my_sum(),
# Print the calculated average
"and the average is", ___
)
})
}
shinyApp(ui, server)