R Блестящий доступ к RenderUI на сервере - PullRequest
0 голосов
/ 14 января 2020

У меня проблема в R Shiny командой renderUI. А именно, после настройки uiOutput и renderUI я больше не могу получить доступ к вновь назначенному входу.

ui.r:

selectInput("Vehicle", "Select Vehicle:",List)
uiOutput("cond_input")

server.r:

rv <- reactiveValues()
 observeEvent(input$Vehicle,{
    req(input$Vehicle)

  output$cond_input <- renderUI({
    selectInput(
      "cars", "Cars:",
      List[substr(List,1,4) == substr(input$Vehicle,1,4)])
    })

 if (input$cars == "Audi"){rv$model <- "toprange"}
 else {{rv$model <- "midrange"}
 })

Проблема с вводом $ автомобили не обнаружены. И когда я заканчиваю вводом $, есть несколько доступных опций, таких как вышеупомянутый автомобиль, но нет «автомобилей». Я могу получить доступ только к параметрам, определенным в ui.R, но не к входным параметрам, определенным в server.R, через renderUI. Однако в других СМИ я видел, что это возможно

Что я сделал не так?

1 Ответ

1 голос
/ 14 января 2020

Вы должны отделить работу или обновить пользовательский интерфейс и обновить свои переменные на основе пользовательского интерфейса. Вот пример, который работает без ошибок. (Я понятия не имел, что было в List, поэтому я догадался.)

library(shiny)
List <- c("Audi A4", "Audi A5", "Ford Mustang", "Ford Escape")
ui <- fluidPage(
  selectInput("Vehicle", "Select Vehicle:",List),
  uiOutput("cond_input"),
  textOutput("type")
)
server <- function(input, output) {
  rv <- reactiveValues()

  output$cond_input <- renderUI({
    selectInput(
      "cars", "Cars:",
      List[substr(List,1,4) == substr(input$Vehicle,1,4)])
  })

  observeEvent(input$cars, {
    rv$model <- if (substr(input$cars,1,4)== "Audi") "toprange" else "midrange"
  })

  output$type <- renderText(rv$model)
}
shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...