[问题] Shiny在下拉选单与按钮间的回传值

楼主: tytony (混沌的大气)   2020-06-22 19:46:50
[问题类型]: 程式咨询
[软件熟悉度]: 使用者
[问题叙述]:
我在shiny建了一个单选的下拉式选单,选择项目后点选OK按钮执行
但由于实际运用时选单项目很多,想把常用选项另外设成几个按钮(DD, EE)
按下去不用点OK就能执行
但我目前的写法只要点过DD或EE之后
从下拉选单选出AA~CC 再按OK都不会回传新的选择,回传值都维持在DD或EE
(按过EE之后,点选DD也同样不会回传DD,感觉像按钮按过后都变成True)
不知该如何写才能正确传回选择的值
谢谢
[程式范例]:
ui <- fluidPage(
mainPanel(
selectizeInput("stn", label = "县市",
choices = list("AA" = "AA", "BB" = "BB", "CC" = "CC"),
selected = "AA"),
actionButton("obs.time.ok", label = "OK"),
actionButton("DD", label = "DD"),
actionButton("EE", label = "EE"),
verbatimTextOutput("res")
))
server <- function(input, output) {
output$res = renderPrint({
stnid = NULL
if (input$obs.time.ok){stnid = isolate(input$stn)}
if (input$DD){stnid = "DD"}
if (input$EE){stnid = "EE"}
return(stnid)
})
}
shinyApp(ui = ui, server = server)
[环境叙述]:
R 4.0.0
[关键字]:
Shiny
作者: cywhale (cywhale)   2020-06-22 20:06:00
你应该要侦测每一次按键的触发 用observeEvent(input$stn三个事件都要 包括 observeEvent(input$DD, {...})与 $EE比如先设一个 evt <- reactiveValues(act=NA)在observeEvent(input$DD,{req(input$DD);evt$act="DD"})相同observeEvent(input$EE,{})和 input$stn都做类似的事最后在你的renderPrint把evt$act回传给verbatimTextOutpu更正你选单想听ok键 应该是听input$obs.time.ok 不是$stn
作者: locka (locka)   2020-06-22 20:18:00
推C大详细解释,shiny里的按钮都应该要搭配一个observe/observeEvent来监听才是正确的写法
楼主: tytony (混沌的大气)   2020-06-22 20:36:00
感谢C大 我来研究一下

Links booklink

Contact Us: admin [ a t ] ucptt.com