#r #shiny
Вопрос:
Я пытаюсь захватить то, что мы выбрали в selectizeinput (например, если мы выберем 3, то 3 должны быть напечатаны), но здесь он продолжает печатать
library(shiny) library(DT) init.choices lt;- c("Choose From List or Type New Value"="") ui lt;- fluidPage( selectizeInput("foo", NULL, choices=init.choices, multiple=FALSE, options=list(create=TRUE)) ) server lt;- function(input, output, session) { observe({ updateSelectizeInput(session, "foo", choices=c(init.choices, c(1,2,3)), selected = 3, server=TRUE) print(input$foo) }) } shinyApp(ui, server)
Комментарии:
1. Поместите печать(ввод$foo) в другое наблюдение() ?
2. да, то же самое. Я попробовал 🙂
3. это работает на меня. Что он печатает для вас ?
4. да, понял.. Спасибо. Но я вижу, что первый отпечаток -«» . Почему?
5. Потому что изначально ничего не выбрано. Затем он проходит через ввод updateSelectizeInput и выбирается 3. Но когда вы запускаете приложение и создаете selectizeInput, там ничего не выбрано, поэтому он печатает «».
Ответ №1:
Печать неправильная, потому что вы вставляете print(input$foo)
то же observe
самое, что updateSelectizeInput
и . Положите это в другое observe
место . И если вы хотите печатать только тогда, когда оно имеет значение , а не NULL
или ""
, вы можете добавить req(input$foo)
перед печатью.
library(shiny) library(DT) init.choices lt;- c("Choose From List or Type New Value"="") ui lt;- fluidPage( selectizeInput("foo", NULL, choices=init.choices, multiple=FALSE, options=list(create=TRUE)) ) server lt;- function(input, output, session) { observe({ updateSelectizeInput(session, "foo", choices=c(init.choices, c(1,2,3)), selected = 3, server=TRUE) }) observe({ req(input$foo) print(input$foo) }) } shinyApp(ui, server)