闪亮的选择在浏览器中输入较大的数据(约15,000个条目)时速度非常慢 [英] Shiny selectInput very slow on larger data (~15,000 entries) in browser

查看:21
本文介绍了闪亮的选择在浏览器中输入较大的数据(约15,000个条目)时速度非常慢的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个基本的闪亮应用,它在"查看器"中速度很快,但当我使用"在浏览器中打开"选项时,选择输入选项需要一段时间才能加载。

selectList <- sapply(1:15000, function(x) paste(sample(letters, 10), collapse = ''))
ui <- fluidPage(
  selectInput('mylist', 'Select Something',
              choices = c(Choose = '', selectList),
              selected = 1)
)

server <- function(input, output) {
}

shinyApp(ui = ui, server = server)

根据该主题-https://groups.google.com/forum/#!topic/shiny-discuss/doHpFM6ZOGg,该问题在某个旧的私有分支中得到了修复。我正在使用的最新安装是这样的,我发现速度慢的问题。

packageVersion('shiny')
[1] ‘0.13.2’

我必须采取什么选项才能使此行为有所不同?

其他需求:

我还希望选择的输入依赖于单选按钮输入,如下所示。但是,由于某些原因,我不能让服务器端选择输入来处理单选按钮上的serveEvent。对我做错了什么有什么想法吗?

# mylist
selectList1 <- sapply(1:15000, function(x) paste0(x, "_", paste(sample(LETTERS, 10), collapse = '')))
selectList2 <- sapply(1:15000, function(x) paste0(x, "_", paste(sample(letters, 10), collapse = '')))

# ui
ui <- fluidPage(
  selectizeInput(
    inputId = 'mylist', label = 'Select Something',
    choices = NULL,
    selected = 1
  ),
  radioButtons('letterType',
               'Select a Letter Type:',
               choices = c('Upper Case' = 'upper',
                           'Lower Case' = 'lower'),
               selected = 'upper',
               inline = TRUE)
)

# server
server <- function(input, output, session) {
  selectListReactive <- reactive({
    validate(need(is.null(input$letterType), FALSE))
    if (input$letterType == 'upper')
      selectList1
    else
      selectList2
  })
  observeEvent(input$letterType, {
    updateSelectizeInput(session = session, inputId = 'mylist',
                         choices = c(Choose = '', selectListReactive()),
                         server = TRUE)
  })
}

# app
shinyApp(ui = ui, server = server)

推荐答案

Hi尝试使用updateSelectizeInput将选项放入服务器,并使用server = TRUE在服务器端存储选项,例如:

library("shiny")
# mylist
selectList <- sapply(1:15000, function(x) paste0(x, "_", paste(sample(letters, 10), collapse = '')))
# ui
ui <- fluidPage(
  selectizeInput(
    inputId = 'mylist', label = 'Select Something',
    choices = NULL,
    selected = 1
  )
)
# server
server <- function(input, output, session) {
  updateSelectizeInput(session = session, inputId = 'mylist', choices = c(Choose = '', selectList), server = TRUE)
}
# app
shinyApp(ui = ui, server = server)

您必须使用selectizeInput而不是selectInput才能正常工作

这篇关于闪亮的选择在浏览器中输入较大的数据(约15,000个条目)时速度非常慢的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆