renderUI с реактивным значением - PullRequest
0 голосов
/ 29 июня 2018

Я хочу показать список selectInput, когда реактивное значение values$myresults содержит данные. Предположим, что values$myresults заполнено функцией (не показана). Когда values$myresults заполнено, список отображается, как и ожидалось. Однако, когда значения $ myresults равны NULL, отображается сообщение об ошибке.

Моя идея состоит в том, чтобы показывать входные данные только при наличии данных для показа.

server.R

values = ReactiveValues(myresults=NULL)
  output$fcomparisons <- renderUI({
     selectInput("comparisons",label="Select comparisons",
                choices = resultsNames(values$myresults))
})

ui.R

  tabsetPanel(id = "foldchanges",type = "tabs",
              tabPanel(title="Summary", value=1, 
              verbatimTextOutput("summary_foldchanges")),
              tabPanel(title="Volcano Plot", value=2, 

              conditionalPanel(
                                                    condition='!(is.null(values$myresults))',
                                                    uiOutput("fcomparisons"),
                                                    plotOutput("volcanoplot")

Спасибо

1 Ответ

0 голосов
/ 29 июня 2018

Прежде всего, пожалуйста, постарайтесь в будущем включить полностью работоспособный пример с полным блестящим приложением и некоторыми данными. В противном случае ваш вопрос, вероятно, будет отвергнут и, возможно, вообще не получен.

Нет функции ReactiveValues, она должна начинаться со строчной буквы r -> reactiveValues.

Чтобы скрыть напечатанный NULL, вы можете использовать req().

См. Следующий пример:

library(shiny)

ui <- fluidPage(
  uiOutput("fcomparisons"),
  actionButton("go", "setValues"),
  actionButton("go1", "setNULL"),
  verbatimTextOutput("printValues")
)

server <- function(input, output){

  values = reactiveValues(myresults=NULL)

  output$fcomparisons <- renderUI({
    selectInput("comparisons",label="Select comparisons",
                choices = values$myresults)
  })

  observeEvent(input$go, {
    values$myresults <- sample(1:20, 5, T)
  })  
  observeEvent(input$go1, {
    values$myresults <- NULL
  })

  output$printValues <- renderPrint({
    req(values$myresults)
    values$myresults
  })
}

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