#r #shiny
#r #shiny
Вопрос:
У меня есть следующий код сервера, который возвращает ошибку «попытка выбрать менее одного элемента в get1index»
server <- function(input, output, session) {
observeEvent(input$search, {
....
enable("show_term")
updateSelectInput(session, "show_term",
choices = list_of_terms, selected = list_of_terms[1])
unique_words = unique(extended.dictionary[[which(list_of_terms == input$show_term)]][,c("word", "abbr")])
...
})}
Ошибка вызвана тем, что input$show_term
равно ""
и в нем нет такого элемента list_of_term
. Это означает, что updateSelectInput
не переназначается значение для input$show_term
.
Однако, когда я помещаю unique_words
under output$raw_dic = renderTable(...)
, он работает просто отлично.
server <- function(input, output, session) {
observeEvent(input$search, {
....
enable("show_term")
updateSelectInput(session, "show_term",
choices = list_of_terms, selected = list_of_terms[1])
output$raw_dictionary = renderTable(colnames = FALSE, striped = TRUE,
{if (!(collected.data[[which(list_of_terms == input$show_term)]] %in%
c("No papers", "No matches"))){
unique_words = unique(extended.dictionary[[which(list_of_terms == input$show_term)]][,c("word", "abbr")])
collected.chuncks = collected.data[[which(list_of_terms == input$show_term)]]}})
...
})}
Итак, во втором случае in вычисляет which(list_of_terms == input$show_term)
и есть input$show_term
равно list_of_terms[1]
.
Здесь я не понимаю логики процесса переназначения. Кто-нибудь может мне это объяснить?
ОБНОВЛЕНИЕ: полный код приложения shiny размещен на GitHub (часть проблемы находится в app.R строках 342-355): https://github.com/Dobrokhotov1989/Abbrevimate
Комментарии:
1. Пожалуйста, предоставьте MRE, то есть полное, минимально работающее приложение shiny, чтобы мы могли воспроизвести поведение. Спасибо!
2. Вы убедились, что на самом деле что-то показано
output$raw_dictionary
? Ошибки вrender
функциях не останавливают работу всего приложения, в соответствующем выводе просто ничего не отображается3. @starja, я добавил ссылку на репозиторий GitHub с полным кодом. Что касается
output$raw_dictionaty
, он отлично работает как сunique_words = ...
, так и без. На самом деле,unique_words
это ничего не добавляет кoutput$raw_dictionary
. Удивительно для меня,which(list_of_terms == input$show_term)
как-то по-другому оценивается, когда это неoutput$raw_dictionary
приводит к упомянутой ошибке.