开始使用免费开始使用

响应式上下文

在 Shiny 中,响应式值是特殊的构造;在 R 编程的其他地方并不存在。因此,响应式值不能在任意 R 代码中使用,只能在响应式上下文中访问。

这也是为什么任何依赖响应式值的变量都必须使用 reactive() 函数创建,否则会报错。Shiny 的服务器函数本身不是响应式上下文,但 reactive() 函数、observe() 函数,以及所有 render*() 函数都是。

本练习是课程的一部分

案例研究:使用 R 的 Shiny 构建 Web 应用

查看课程

练习说明

已为您提供一个 Shiny 应用,其中包含两个数值输入 num1num2,以及一个文本输出。您的任务是:

  • 在名为 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)
编辑并运行代码