gpt4 book ai didi

r - 如何在 Shiny observeEvent 中监听多个事件表达式

转载 作者:行者123 更新时间:2023-12-04 07:50:31 28 4
gpt4 key购买 nike

我想要两个不同的事件来触发观察者。有人建议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 后,没有任何 react 。如果您单击按钮 test2 它会打印到您的控制台。按下 test2 按钮后,单击 test1 会打印消息。这是一种奇怪的行为。

that 中的另一个建议链接是使用
list(input$test1, input$test2)

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

最佳答案

应该这样做,请注意,您仍然必须检查按钮是否被单击,如@MrFlick 所述

1.可以使用响应式(Reactive)表达

#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)

2. 根据@MrFlick 给出的示例(现已删除)
#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)

关于r - 如何在 Shiny observeEvent 中监听多个事件表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41960953/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com