[問題] Shiny reactive value表單(已解決但不懂)

看板R_Language作者 (choc.)時間9年前 (2015/03/20 13:16), 9年前編輯推噓0(006)
留言6則, 1人參與, 最新討論串1/1
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 使用者(已經有用R 做過不少作品) [問題敘述]: 我在自己的 Shiny server 上寫一個能讀 MySQL 資料的網頁 現在想在其中一個 tab 加入操作資料庫的功能。 例如說,我可以選擇 table 中的某一列, 然後下面各個變數就會用預設值的形式叫出那筆資料, 我可以直接更改、然後送出修訂。 目前我的 UI 是: output$KeyIn = renderUI({ fluidPage( numericInput("RowChoice", "選擇第幾筆資料", value = 1, min = 1, max = dim(Data)[1], step = 1), h2("以下是編輯區") fluidRow( column(width = 3, textInput("Var", "變數", value = Data$Var[input$RowChoice])) ), fluidRow( column(width = 12, offset = 6, submitButton("送出修訂")) ) ) }) Data$Var[isolate(input$RowChoice)] isolate(Data$Var[input$RowChoice]) 都不合法 我試過另外寫一個 reactive: VarReac = reactive({as.numeric(input$RowChoice)}) 或是用一個 function: VarFunc = function(input) { return(input$RowChoice) } 然後用 VarFunc() 呼叫都不行。 我希望這個網站可以盡可能地用 R 來完成, 所以想徵詢大家,可以怎麼在 R 實現這件事 傍晚補充 => 我寫出一個合法的版本了但我看不太懂: textInput("Var", "變數", value = reactive(function() { if (is.null(input$RowChoice)) { return("NULL") } else { return(isolate({ Data$Var[input$RowChoice]) })) } })()) 我不太懂為什麼 reactive 一定要內含一個 function、再去 no input "()" 而且為什麼一定要考慮 is.null 的狀況? 我直接把 isolate({Data$Var[input$RowChoice]}) 寫在 value = 之後卻又不行? [程式範例]: 如上 [環境敘述]: R version 3.1.2 (2014-10-31) Platform: x86_64-redhat-linux-gnu (64-bit) attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] RMySQL_0.10.2 DBI_0.3.1 shiny_0.11.1 [關鍵字]: Shiny, form, reactive value -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.121.113 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1426828595.A.49B.html ※ 編輯: skylikewater (140.112.121.113), 03/20/2015 16:37:26 ※ 編輯: skylikewater (140.112.121.113), 03/20/2015 16:37:34

03/22 19:56, , 1F
reactive(function() { 需要簡化為 reactive({
03/22 19:56, 1F

03/22 19:59, , 2F
不然會有 "Passing functions to 'reactive' is
03/22 19:59, 2F

03/22 19:59, , 3F
deprecated" 的警告
03/22 19:59, 3F

03/22 19:59, , 4F
而一個 renderUI 中至少要有一個
03/22 19:59, 4F

03/22 20:00, , 5F
if (is.null(input$XXX)) 判斷式,不然不會動
03/22 20:00, 5F

03/22 20:00, , 6F
但也不會報錯 真的很詭異的 bug
03/22 20:00, 6F
文章代碼(AID): #1L2wqpIR (R_Language)