推 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