精華區beta R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢 [軟體熟悉度]: 使用者 [問題敘述]: 我在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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 115.43.82.63 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1592826413.A.A46.html
cywhale: 你應該要偵測每一次按鍵的觸發 用observeEvent(input$stn 06/22 20:06
cywhale: 三個事件都要 包括 observeEvent(input$DD, {...})與 $EE 06/22 20:07
cywhale: 比如先設一個 evt <- reactiveValues(act=NA) 06/22 20:08
cywhale: 在observeEvent(input$DD,{req(input$DD);evt$act="DD"}) 06/22 20:09
cywhale: 相同observeEvent(input$EE,{})和 input$stn都做類似的事 06/22 20:10
cywhale: 最後在你的renderPrint把evt$act回傳給verbatimTextOutpu 06/22 20:11
cywhale: 更正你選單想聽ok鍵 應該是聽input$obs.time.ok 不是$stn 06/22 20:15
locka: 推C大詳細解釋,shiny裡的按鈕都應該要搭配一個observe/obs 06/22 20:18
locka: erveEvent來監聽才是正確的寫法 06/22 20:18
tytony: 感謝C大 我來研究一下 06/22 20:36
> -------------------------------------------------------------------------- < 作者: TreeMan (好啊...) 看板: R_Language 標題: Re: [問題] Shiny在下拉選單與按鈕間的回傳值 時間: Mon Jun 22 20:46:55 2020 action btn每按一次+1 所以你的if判別在btn按一次以後都是TRUE server改成下面這樣就可以正常運作了 server <- function(input, output) { dd = 0 ee = 0 output$res = renderPrint({ stnid = NULL if (input$obs.time.ok){stnid = isolate(input$stn)} if (input$DD > dd){stnid = "DD"; dd <<- dd + 1} if (input$EE > ee){stnid = "EE"; ee <<- ee + 1} print(input$DD) print(dd) return(stnid) }) } 不過還是改用observer比較好XD -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.77.105.153 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1592830017.A.EAF.html ※ 編輯: TreeMan (42.77.105.153 臺灣), 06/22/2020 20:47:42
tytony: 完全忘記actionbutton會累加 照cywhale大的方法去改OK了 06/22 23:07