r - Shiny 应用程序的初始加载没有更新

在 RStudio Shiny 应用程序中,让观察者在初始应用程序加载后开始观察的最佳方式是什么。例如,在下面的应用程序中,我希望选择输入以 a1 的初始值开始,然后,一旦加载应用程序,当用户进行选择时从 input1 我希望 input2 更改为“3”。但只有在应用加载后——我希望用户首先看到“1”。

这显然只是更复杂应用程序的一个非常简单的示例。在我更复杂的应用程序中,我设置了一个条件,将值与全局值进行比较,但必须有更简单的方法。

server<-function(session, input, output) {

  observeEvent(input$input1, {
    updateSelectInput(session, "input2", selected="3")

  })


}

ui<-fluidPage(

  # Application title
  titlePanel("Hello Shiny!"),

  # Sidebar with a slider input for the number of bins
  sidebarLayout(
    sidebarPanel(
        selectInput("input1", label="Input1", choices=c("a", "b", "c"), selected="a"),
        selectInput("input2", label="Input2", choices=c("1", "2", "3"), selected="1")
    ),

    mainPanel(

    )
  )
)

shinyApp(ui=ui, server=server)

最佳答案

可能有更优雅的方法来执行此操作,但您可以使用随 Input1 的每次更改而增加的 react 值添加一个计数器。在第一次更改为输入 1 时,该计数器增加到 2,并且输入 2 更改为“3”。当 rv$X == 2 时,我将 observeEvent 设置为仅在第一次单击时更改 Input2,因此在修改 Input1 时 Input2 并不总是更改为 3。请参阅下面的服务器 fxn:

server<-function(session, input, output) {
   rv<-reactiveValues(X = 1)
   observeEvent(input$input1,{
      if(rv$X==2) updateSelectInput(session, "input2", selected="3")
   rv$X<-rv$X+1
})

}

https://stackoverflow.com/questions/33398078/

相关文章:

jsp - 带有 Tomcat 的 Intellij IDEA HotSwap 适用于类,但不适用于

ios - AVSampleBufferDisplayLayer : change videoGra

python - 没有名为 csv 的模块

pdf - 有没有一种方法可以自动化/编写脚本(例如 perl)标记的 pdf 文件以查看它是否符合

python - 我们如何使用 SQL-esque "LIKE"标准连接两个 Spark SQL 数

android - 哪个平台支持BLE数据包长度扩展功能?

php - Wordpress 如何向所有 SETCOOKIE() 函数添加 httponly 和安

multithreading - 每个连接的 Netty 多线程

nginx - Kong 拒绝将自定义插件识别为已启用

java - 如何为 Selenium Grid 中的 session 提供无限空闲时间,但清理断开