我有一个基于数据框的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,两个日期是相同的。
运行时,应用程序如下所示:
但当被迫考虑ID#2时,应用程序会感到困惑,ID#2有多个相同的日期:
下拉菜单有一个空白的第一选择,但第二个选项填充正确。
我如何更正此问题,以便下拉列表中填充了任意数量的相同日期?
(我越是想到这一点,感觉就像一个错误,而不是简单地将功能从对象中扯出来。不难想到重复值会引起人们兴趣的很多情况。)
感谢您的关注。
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)
答案 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)