2014-09-23 58 views
3

我的目標是將選擇輸入中的值填充到文本輸入。文本輸入應該能夠稍後由用戶修改。不幸的是,我的應用程序不起作用(選擇未填充),但沒有錯誤。選擇輸入以填充文本框中的閃爍

ui.R

library(shiny) 

shinyUI(fluidPage(

    sidebarLayout(
     sidebarPanel(
      selectInput("id", 
         label = "Choose a number", 
         choices = list() 
      ), 

      textInput("txt1", "number", 0) 

     ), 



     mainPanel(

     ) 
    ) 
)) 

server.R

df <- data.frame(a=c(1,2),b=c(3,4)) 

shinyServer(function(input, output, session) { 
    # fill the select input 
    updateSelectInput(session, "id", choices = df$a) 

    observe({ 
     # When I comment this line, the select is correctly filled 
     updateTextInput(session, "txt1", value = df[df$a==input$id,'a']) 
    }) 

}) 

任何的可能是錯誤的想法?

回答

2

您的代碼不爲我工作了您的示例數據集,但它的工作原理爲:

df <- data.frame(a=c("a","b"),b=c(3,4)) 

我的猜測是,updateSelectInput()需要一個字符。然而,這不起作用:

updateSelectInput(session, "id", choices = as.character(df$a)) 

但是如果你定義爲DF:

df <- data.frame(a=c("1","2"),b=c(3,4)) 

這工作。這個例子的完整代碼:

library(shiny) 

df <- data.frame(a=c("1","2"),b=c(3,4)) 

shinyApp(
    ui = shinyUI(fluidPage(
    sidebarLayout(
     sidebarPanel(
     selectInput("id", 
      label = "Choose a number", 
      choices = list() 
     ), 
     textInput("txt1", "number", 0) 
    ), 
     mainPanel() 
    ) 
)), 
    server = shinyServer(function(input, output, session) { 
    updateSelectInput(session, "id", choices = df$a) 

    observe({ 
     updateTextInput(session, "txt1", value = df[df$a==input$id,'a']) 
    }) 
    }) 
) 
+0

我試過加入「」但它仍然不起作用。 – poiuytrez 2014-09-24 13:03:13

+0

@poiuytrez它適合我。你有什麼版本的閃亮? – ddiez 2014-09-24 13:09:45

+0

@poiuytrez發佈了適用於我的代碼(您可以複製粘貼整個塊)。這不適合你嗎? – ddiez 2014-09-24 13:21:38