【问题标题】:'observeEvent' function into another 'observeEvent' function not working'observeEvent' 功能进入另一个 'observeEvent' 功能不起作用
【发布时间】:2020-04-02 19:20:14
【问题描述】:

以下是我最初的问题的简化版本。我在这里 试图将“observeEvent”函数运行到另一个“observeEvent”中 功能。代码应按顺序执行以下步骤:

  1. 点击“打印”按钮,打印输入的数字
  2. 点击“添加”按钮,添加 +5 并打印数字

该代码仅在第一次工作。从第二次开始 显示添加的数字以及打印的数字,无需单击 “添加”按钮。

请帮忙。

library(shiny)
ui <- fluidPage(
  fluidRow(
    sliderInput("n", min = 0, max = 100, value = 50, label = "Choose a number"),
    actionButton("Print","Print the number"),
    verbatimTextOutput("num1"),
    actionButton("Add","Add +5 to the printed number"),
    verbatimTextOutput("num2")
  )
)

server <- function(input, output){
  all <- reactiveValues(
    n = 50,
    a = 55
  )

  observeEvent(input$Print,{
    all$n <- input$n
    output$num1 <- renderPrint(all$n)

    observeEvent(input$Add,{
      all$d <- input$n + 5
      output$num2 <- renderPrint(all$d)
    })

  })
}

shinyApp(ui = ui, server = server)

【问题讨论】:

  • observeEvent 根据定义将触发其中的任何内容。将它们分开并在第二个observeEvent 中使用all$n,即在input$Add
  • 是的。它正在工作..再次感谢苏利曼。
  • 您能否提供完整的有效代码作为答案?谢谢。

标签: r shiny


【解决方案1】:

如果将它们分开,则可以使第二个 observeEvent 被第一个内部发生的任何事情触发。

library(shiny)
ui <- fluidPage(
  fluidRow(
    sliderInput("n", min = 0, max = 100, value = 50, label = "Choose a number"),
    actionButton("Print","Print the number"),
    verbatimTextOutput("num1"),
    actionButton("Add","Add +5 to the printed number"),
    verbatimTextOutput("num2")
  )
)

server <- function(input, output){
  all <- reactiveValues(
    n = 50,
    a = 55
  )

  observeEvent(input$Print, {
    all$n <- input$n
    output$num1 <- renderPrint(all$n)
  })

   observeEvent(all$n, {
     all$d <- input$n + 5
     output$num2 <- renderPrint(all$d)
   })
}

shinyApp(ui = ui, server = server)

【讨论】:

    猜你喜欢
    • 2018-01-23
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 2021-06-10
    相关资源
    最近更新 更多