在Shiny selectInput框中显示所有值(1000 +)

时间:2016-11-21 00:05:18

标签: r drop-down-menu shiny

我正在开发一个Shiny应用程序,我希望允许用户从更长的基因列表中选择(~1800),然后显示所选基因的相应图表。我的问题是,我无法让Shiny在selectInput框的下拉菜单中显示可供选择的整个基因列表,似乎只有前1000个左右才能显示。

然后我找到了一个很有前途的解决方案,使用服务器端选择,当用户开始在选择框中输入时,所有可用的选项都会显示出来。但是,当用户没有输入时,下拉菜单仍然不会显示超过前1000个基因,这可能表明没有更多可用选项。

我使用不同的数据集(1396个机场代码)重新创建了问题以用于说明目的:

library(shiny)
library(nycflights13)

ui <- fluidPage(
  wellPanel(
    fluidRow(
      column(12, offset = 0,
        titlePanel("Look up airports"))),
    fluidRow(
      column(3, offset = 0,
        selectizeInput(inputId = "airportCode", label = "", choices = NULL,
          options = list(placeholder = "Type airport code"))))
  )
)

server <- function(input, output, session) {
  updateSelectizeInput(session, "airportCode",
    choices = as.vector(airports$faa), server = TRUE)
}

shinyApp(ui = ui, server = server)

当您没有输入选择框时,下拉菜单中显示的最后一个机场代码仅为“PAM”。然而,当你开始输入时,你可以一直到最后一个“ZYP”,我认为这对用户来说相当混乱。

如果这在某种程度上是可行的,那么最好是将所有值显示在下拉菜单中。否则根本没有在那里列出,只有在你开始输入时才显示它们。

1 个答案:

答案 0 :(得分:8)

请参阅https://github.com/rstudio/shiny/issues/412

您可以更改最大数量的选项:

selectizeInput(inputId = "airportCode", label = "", choices = NULL,
  options = list(placeholder = "Type airport code",
    maxOptions = 2000)
  )