如何在一个闪亮的observeEvent中侦听多个事件表达式

如何在一个闪亮的observeEvent中侦听多个事件表达式,r,shiny,shiny-reactivity,R,Shiny,Shiny Reactivity,我想要两个不同的事件来触发观察者。有人建议,这应该是可行的。但这似乎只取决于第二个事件 observeEvent({ input$spec_button mainplot.click$click }, { ... } ) 看看这个例子 ui <- shinyUI(bootstrapPage( actionButton("test1", "test1"), actionButton("test2", "test2")) ) server <- shinyS

我想要两个不同的事件来触发观察者。有人建议,这应该是可行的。但这似乎只取决于第二个事件

observeEvent({ 
  input$spec_button
  mainplot.click$click
}, { ... } )
看看这个例子

ui <- shinyUI(bootstrapPage(
    actionButton("test1", "test1"),
    actionButton("test2", "test2"))
)

server <- shinyServer(function(input, output) {
    observeEvent({
        input$test1
        input$test2
    }, {
        print('Hello World')
    })
})

shinyApp(ui, server)

即使不单击按钮也会打印消息。

这应该可以做到,请注意,您仍然需要检查是否按@MrFlick所述单击了按钮

1.你可以用反应式表达
#rm(list=ls())
图书馆(闪亮)
uiobserveEvent是复杂观察案例的包装器。在这种特殊情况下,当一个或其他无功值发生变化时,可以使用简单的观察。这项工作:

require(shiny)    
ui <- basicPage(
      actionButton("test1", "test1"),
      actionButton("test2", "test2")
    )
    
    server <- function(input, output, session){
    
      observe( {
        input$test1
        input$test2
        if(input$test1==0 && input$test2==0){
          return()
        }
        print('Hello World')
        })
    }
    
    shinyApp(ui, server)
require(闪亮)

ui即使没有按下任何按钮,它也会首先打印“Hello World”。不,它不会,请将此代码复制并粘贴到其中。现在请参见:)谢谢
return()
,上面的答案看起来很笨拙。相反,我们不能只说:
if(input$test1!=0 | input$test2!=0)print('Hello World')
req
是最近才引入的,我不认为它早在2017年1月就存在了,当时这个问题得到了回答
#rm(list = ls())
library(shiny)
ui <- shinyUI(bootstrapPage(
  actionButton("test1", "test1"),
  actionButton("test2", "test2"))
)

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

  toListen <- reactive({
    list(input$test1,input$test2)
  })
  observeEvent(toListen(), {
    if(input$test1==0 && input$test2==0){
      return()
    }
    print('Hello World')
  })
})

shinyApp(ui, server)
#rm(list = ls())
library(shiny)
ui <- shinyUI(bootstrapPage(
  actionButton("test1", "test1"),
  actionButton("test2", "test2"))
)

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

  observeEvent(input$test1 | input$test2, {
    if(input$test1==0 && input$test2==0){
      return()
    }
    print('Hello World')
  })
})

shinyApp(ui, server)
require(shiny)    
ui <- basicPage(
      actionButton("test1", "test1"),
      actionButton("test2", "test2")
    )
    
    server <- function(input, output, session){
    
      observe( {
        input$test1
        input$test2
        if(input$test1==0 && input$test2==0){
          return()
        }
        print('Hello World')
        })
    }
    
    shinyApp(ui, server)
ui <- basicPage(
  actionButton("test1", "test1"),
  actionButton("test2", "test2")
)

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

  observeEvent(input$test1 | input$test2, { print('Hello World') } , ignoreInit = TRUE)
}

shinyApp(ui, server)