R 首次加载Shining应用程序时没有更新

R 首次加载Shining应用程序时没有更新,r,shiny,rstudio,R,Shiny,Rstudio,在RStudio闪亮应用程序中,让观察员在初始应用程序加载后开始观察的最佳方式是什么。例如,在下面的应用程序中,我希望选择输入以a和1的初始值开始,然后,一旦加载应用程序,当用户从input1进行选择时,我希望input2更改为3。但只有在应用程序加载后-我希望用户先看到1 这显然只是一个更复杂应用程序的简单示例。在我更复杂的应用程序中,我设置了一个条件,将值与全局值进行比较,但必须有一种更简单的方法 server<-function(session, input, output) {

在RStudio闪亮应用程序中,让观察员在初始应用程序加载后开始观察的最佳方式是什么。例如,在下面的应用程序中,我希望选择输入以a和1的初始值开始,然后,一旦加载应用程序,当用户从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)

也许有一种更优雅的方法可以做到这一点,但您可以使用随输入1的每次更改而增加的反应值添加计数器。第一次更改输入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
})

}

谢谢。这是一个可能的解决方案,但你是对的,它并不理想。在我的应用程序中,我已经有了一个全局值形式的等价物,我在应用程序初始化时将其设置,然后在观察者中检查是否相等,然后在观察者中重新设置。如果可能的话,我会尽量避免类似的黑客攻击。