selectizeInput: большинство вариантов не загружается - PullRequest
0 голосов
/ 27 февраля 2020

У меня странная проблема, показанная в коде ниже. Я создаю фрейм данных со столбцами меток и значений и обновляю его selectizeInput на стороне сервера. Сервер работает так, что число (скажем, десятки) записей доступно для поиска, но большинство из моих 9000 записей не могут быть найдены поиском. Если я попытаюсь установить server = F, то вместо значений сами метки появятся в результате поиска. Поведение server = F полностью нарушено, а server = T действует так, как если бы кэшировалась только небольшая часть элементов, а остальные игнорируются. Есть мысли?

PS Фрейм данных был построен с помощью stringsAsFactors = F

PPS Проблема, похоже, заключается в том, что мои метки имеют одинаковые префиксы - только 9 уникальных префиксов для 9000 меток, когда только первые 5 символы используются для поиска. Тем не менее, я не вижу, как сказать selectize использовать более 5 символов (который, кажется, является # используется на основе того, какие строки и не найдены).

#
# This is a Shiny web application. You can run the application by clicking
# the 'Run App' button above.
#
# Find out more about building applications with Shiny here:
#
#    http://shiny.rstudio.com/
#

library(shiny)
library(stringi)
library(shinydashboard)
library(networkD3)
library(tidyverse)

MyMap = read.csv('MyMap.csv', row.names = 1, stringsAsFactors = F)
colnames(MyMap) = c('label', 'value')

# Define UI for application that draws a histogram
ui <- dashboardPage(

    # Application title
    dashboardHeader(title="Example Search App"),

    # Sidebar with a slider input for number of bins 
    dashboardSidebar(
      disable=TRUE
    ),
    dashboardBody(
        fluidRow(
            column(12,
                selectizeInput(
                    inputId = 'Selector', label = 'What happened to item...', choices = NULL,
                    selected=NULL, options = list(maxOptions = 5)
                ),
                verbatimTextOutput('ex_out'),  
            )
        )
    )
)

# Define server logic required to draw a histogram
server <- function(input, output, session) {
    updateSelectizeInput(session, 'Selector', choices = MyMap, server = TRUE, selected=NULL)
    ##updateSelectizeInput(session, 'Selector', choices = MyMap, server = FALSE, selected=NULL)    

    output$ex_out <- renderPrint({
      input[['Selector']]
    })
}

# Run the application 
shinyApp(ui = ui, server = server)

1 Ответ

0 голосов
/ 01 марта 2020

Хорошо, поэтому в основном selectizeInput использует 5-символьный префикс для поиска. Это очень ограничивает и не может быть изменено пользователем. Однако autocomplete_input выполняет более или менее ту же функцию и работает хорошо. Вместо этого я рекомендую перейти на этот виджет: https://rdrr.io/cran/dqshiny/man/autocomplete_input.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...