Использование renderText при определенных условиях Shiny - PullRequest
0 голосов
/ 27 мая 2020

Я новичок в мире R и просто пытаюсь создать приборную панель на Shiny. Моя проблема в том, что я хочу отображать текст, только если в функции renderplotly выполняются определенные условия.

shinyUI(fluidPage(
titlePanel("Posti occupati in terapia intensiva"),
sidebarLayout(
    sidebarPanel(
        selectInput("region","Scegli regione",unique(as.character(region_dataset$denominazione_regione),)
                    ),
        dateInput("day","Scegli data", min=region_dataset$data[1], max=region_dataset$data[nrow(region_dataset)], format="dd/mm/yyyy",value=region_dataset$data[nrow(region_dataset)]
        ),
    ),
    mainPanel(
        plotlyOutput(outputId = "TI"),
        textOutput(outputId= "text")
    )
),
))

Это страница пользовательского интерфейса, и я показываю вам сервер

shinyServer(function(input, output) {

   output$TI <- renderPlotly({
       day <- input$day
       region <- input$region
       request <- filter(region_dataset,region_dataset$data==day & region_dataset$denominazione_regione==region)

    plot_ly(as.data.frame(request$terapia_intensiva),
        domain = list(x = c(0, 1), y = c(0, 1)),
        value = request$terapia_intensiva,
        title = list(text = "Posti occupati TI"),
        type = "indicator",
        mode = "gauge+number+delta",
        delta = (reference = as.integer(request$terapia_intensiva[nrow(request$data)-1])),
        gauge = list(
            axis =list(range = list(NULL, request$posti_TI)),
            bar = list(color = "darkmagenta"),
            borderwidth = 3,
            steps = list(
                list(range = c(0, 0.33*request$posti_TI), color = "green"),
                list(range = c(0.33*request$posti_TI, 0.66*request$posti_TI), color = "yellow"),
                list(range = c(0.66*request$posti_TI, request$posti_TI), color = "red")),
            threshold = list(
                line = list(color = "cyan", width = 5),
                thickness = 0.75,
                value = request$posti_TI)))

})
  output$text <- renderText("Numero massimo di posti occupati")
})

Моя проблема в том, что я хочу отображать текст на панели, только если request$terapia_intensiva>request$posti_TI Я не могу найти решение этой проблемы, я пробовал использовать реактивную функцию и условную панель, но безрезультатно. Спасибо за помощь.

1 Ответ

0 голосов
/ 27 мая 2020

renderText() может содержать logi c, поэтому

output$text <- renderText({
  if (request$terapia_intensiva>request$posti_TI) "Numero massimo di posti occupati"
})

Если if() возвращает FALSE, renderText возвращает NULL. Если вы хотите быть явным, вы всегда можете добавить else NULL или else rturn(NULL), если вы используете sh.

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