2014-09-23 56 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