我想要两个不同的事件来触发观察者。有人建议here这应该有效。但它似乎只取决于第二次事件。
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)
点击按钮test1后没有任何反应。如果单击按钮test2,它将打印到您的控制台。按下test2按钮后,单击test1打印消息。这是一种奇怪的行为。
that链接中的另一个建议是使用
list(input$test1, input$test2)
即使不点击按钮,也会打印信息。
答案 0 :(得分:5)
这应该这样做,请注意你仍然需要检查@MrFlick提到的按钮是否被点击
#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)
答案 1 :(得分:0)
observeEvent 是复杂的 observe 案例的包装。在这种特定情况下,当一个或其他无功值发生变化时,可以使用简单的观察。。
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)
在 observeEvent 中使用选项来消除return()调用有一点意义:
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)