响应式上下文
在 Shiny 中,响应式值是特殊的构造;在 R 编程的其他地方并不存在。因此,响应式值不能在任意 R 代码中使用,只能在响应式上下文中访问。
这也是为什么任何依赖响应式值的变量都必须使用 reactive() 函数创建,否则会报错。Shiny 的服务器函数本身不是响应式上下文,但 reactive() 函数、observe() 函数,以及所有 render*() 函数都是。
本练习是课程的一部分
案例研究:使用 R 的 Shiny 构建 Web 应用
练习说明
已为您提供一个 Shiny 应用,其中包含两个数值输入 num1 和 num2,以及一个文本输出。您的任务是:
- 在名为
my_sum的响应式变量中,计算两个数值输入的和(第 10 行)。 - 在名为
my_average的响应式变量中,计算这两个输入的平均值(第 14 行)。 - 在文本输出中,使用这些响应式变量显示计算得到的平均值(第 23 行)。
交互式实操练习
通过完成这段示例代码来试试这个练习。
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)