gpt4 book ai didi

r - Shiny 的 selectInput 在浏览器中的较大数据(约 15,000 个条目)上非常慢

转载 作者:行者123 更新时间:2023-12-04 00:10:59 32 4
gpt4 key购买 nike

我有这个基本的 Shiny 应用程序,它在“查看器”中的速度非常快,但是当我使用“在浏览器中打开”选项时,选择输入选项需要一段时间才能加载。

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 ,这个问题在一些旧的私有(private)分支中得到了修复。我正在使用的最新安装是这个,我看到了缓慢的问题。
packageVersion('shiny')
[1] ‘0.13.2’

我有什么选择可以让它表现得不同吗?

额外需求:

我还希望选定的输入依赖于单选按钮输入,如下所示。但是,由于某种原因,我无法让服务器端选择输入以与单选按钮上的 observeEvent 一起使用。关于我做错了什么有什么想法吗?
# 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)

最佳答案

嗨,尝试使用 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为了这个工作

关于r - Shiny 的 selectInput 在浏览器中的较大数据(约 15,000 个条目)上非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38438920/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com