Использование реактивного значения в выражении IF в пользовательском интерфейсе в R Shiny - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь создать условный пользовательский интерфейс в Shiny, который зависит от ввода пользователя. Я специально хочу сделать if в части пользовательского интерфейса, а НЕ в серверной части.

Вот пример того, чего я хочу достичь.

# app.R

library(shiny)

ui <- shiny::fluidPage(
  shiny::headerPanel(title = "Basic App"),
  shiny::sidebarPanel(
    shiny::sliderInput(inputId = "a",
                       label = "Select an input to display",
                       min = 0, max = 100, value = 50
    )
  ),
  if(output$out < 50){
    shinyjs::hide(shiny::mainPanel(h1(textOutput("text"))))
  }else{
    shiny::mainPanel(h1(textOutput("text")))
  }

)

server <- function(input, output) {
  output$text <- shiny::renderText({
    print(input$a)
  })

  var <- shiny::reactive(input$a)

  output$out <- renderText({ var() })
}

shiny::shinyApp(ui = ui, server = server)

Можно ли использовать реактивное значение в части пользовательского интерфейса функции?

1 Ответ

0 голосов
/ 29 августа 2018

Я думаю, conditionalPanel может быть хорошим решением для того, что вы хотите сделать

library(shiny)

ui <- shiny::fluidPage(
  shiny::headerPanel(title = "Basic App"),
  shiny::sidebarPanel(
    shiny::sliderInput(inputId = "a",
                       label = "Select an input to display",
                       min = 0, max = 100, value = 50
    )
  ),
  shiny::mainPanel(
    conditionalPanel(
      condition = "input.a > 50",
      h1(textOutput("text")))
    )

)

server <- function(input, output) {
  output$text <- shiny::renderText({
    print(input$a)
  })
}

shiny::shinyApp(ui = ui, server = server)

Надеюсь, это поможет !!

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