selectInput无法在Shiny

时间:2015-07-14 05:17:34

标签: r shiny

我有一个基于数据框的Shiny应用程序,如下所示:

  ID       Date      result
  1      1/1/2010    100
  1      12/12/2010  200
  2      1/1/2011    300
  2      1/1/2011    400

注意双ID ...而对于ID 2,两个日期是相同的。

运行时,应用程序如下所示:

enter image description here

但当被迫考虑ID#2时,应用程序会感到困惑,ID#2有多个相同的日期:

enter image description here

下拉菜单有一个空白的第一选择,但第二个选项填充正确。

我如何更正此问题,以便下拉列表中填充了任意数量的相同日期?

(我越是想到这一点,感觉就像一个错误,而不是简单地将功能从对象中扯出来。不难想到重复值会引起人们兴趣的很多情况。)

感谢您的关注。

app.R

library('shiny')

DF <- data.frame(ID=c(1,1,2,2), Date=c('1/1/2010', '12/12/2010', '1/1/2011', '1/1/2011'), result=c(100, 200, 300, 400))
DF$Date <- as.character(DF$Date)

  server <- function(input, output, session) {

  get_id <- reactive({
    id <- DF[which(DF$ID == input$ID), ]
    return(id)})

  output$result <- renderText({ 
    ans <- get_id()
    print(ans)
    paste("Result: ", ans$result)})


  output$dates<-renderUI({
    print(get_id()$Date)
    selectInput('dates', 'Select date:', choices=get_id()$Date, selected=get_id()$Date[1])})
}

ui <- fluidPage(
  fluidRow(column(2,
      numericInput(inputId="ID", label="Pick an ID: ", value=1))),
           column(2, 
      uiOutput("dates")),
          column(3, mainPanel(textOutput("result")))
)

shinyApp(ui = ui, server = server)

2 个答案:

答案 0 :(得分:3)

我不确定为什么它没有显示,但是你的情况有一个好转。使用selectize = FALSE功能中的参数selectInput()。这应该为您提供所需的功能。

selectInput('dates', 'Select date:', choices=get_id()$Date,selected=get_id()$Date, selectize = FALSE)})

答案 1 :(得分:0)

看起来像是选择了最近添加的支持以允许重复值(请参阅github问题https://github.com/brianreavis/selectize.js/issues/129

但看起来闪亮还没有拿到那个版本(github问题https://github.com/rstudio/shiny/issues/518