#r #shiny #selectinput
Вопрос:
У меня есть большое блестящее приложение , в котором есть два selectInput
, у одного есть два варианта, а другой использует updateSelectizeInput
с server = TRUE
, чтобы получить параметры, потому что для отображения требуется более 36000 элементов, и это меняется в зависимости от того, что выбрано в первом selectInput
.
Это работает, но, как вы можете видеть из следующего gif, когда я печатаю, окно поиска перемещается. Я предполагаю, что он перемещается во время поиска на стороне сервера. В чем может быть причина этого? Я попытался воссоздать проблему в простом приложении, но, хотя я добавляю все соответствующие части приложения, в воспроизводимом примере проблемы нет.
Вот пример кода:
library(shiny)
library(shinyjs)
option_list1<-seq(1,36000,1)
option_list2<-seq(36000, 72000,1)
ui <- fluidPage(
useShinyjs(),
selectInput(
inputId = "scsource",
label = "Select source of scRNA-seq data",
choices = list(
"Carraro et al(2021) - Lung",
"Reyfman et al(2018) - Lung"
),
selected = NULL,
multiple = FALSE
),
uiOutput("scgeneinput")
)
server <- function(input, output, session) {
output$scgeneinput<-renderUI({
req(input$scsource)
selectInput(
"scgene",
"Select multiple genes",
multiple = TRUE,
choices = NULL
)
})
observeEvent(input$scsource, {
if (input$scsource == "Carraro et al(2021) - Lung"){
delay(500, updateSelectizeInput(session, "scgene", choices = option_list1, server = TRUE))
}
else if(input$scsource == "Reyfman et al(2018) - Lung"){
delay(500, updateSelectizeInput(session, "scgene", choices = option_list2, server = TRUE))
}
})
}
shinyApp(ui, server)
Кроме того, я использую shinyjs::delay
функцию, потому что без нее параметры не видны. Этого не происходит в небольшом воспроизводимом приложении.
Любая помощь будет признательна.