В кратком ответе явно указаны ваши choices
и server
в вашем обновлении.
server <- function(input, output, session)
{
myChoices <- paste("Item", 1:10000)
updateSelectizeInput(session, "listid", choices = myChoices, server = T)
observeEvent(input$buttonid,
{
updateSelectizeInput(session, "listid",
server = TRUE,
choices = myChoices,
selected = "Item 1234")
})
}
Значение по умолчанию для server
в updateSelectizeInput
равно FALSE
. Это приводит к тому, что код помещается в оператор управления, который вместо этого использует updateSelectInput
. Из кода функции
function (session, inputId, label = NULL, choices = NULL, selected = NULL,
options = list(), server = FALSE)
{
...
if (!server) {
return(updateSelectInput(session, inputId, label, choices,
selected))
}
...
Это отправляет сообщение клиенту, предполагая, что все варианты присутствуют (но, как вы упомянули, присутствуют только первые 1000).
Просто настройка server = TRUE
приводит к ошибке при нажатии кнопки.
Warning: Error in [.data.frame: undefined columns selected
[No stack trace available]
Я не полностью проследил причину, но в конечном итоге он создает пустой выбор data.frame с атрибутом, обозначающим выбранное значение. Я предполагаю, что где-то еще в вызовах функций к объекту session
этот атрибут используется, чтобы попытаться выбрать столбец, созданный из пустого data.frame.
Функция обновления, по-видимому, не изменяет choices
, хранящуюся на сервере, поэтому, по-видимому, она и возникает при поиске. Во время изменения выбранного значения кажется, что он пытается выбрать из NULL-списка вариантов вместо списка вариантов на сервере.
Похоже, что вам, по сути, приходится воссоздавать selectizeInput
при обновлении. с выбранным значением за пределами вашего первоначального списка.