【问题标题】:Using renderText under certain condition Shiny在特定条件下使用 renderText Shiny
【发布时间】:2020-05-28 02:42:58
【问题描述】:

我是 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")
    )
),
))

这是 ui 页面,我向您展示服务器

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&gt;request$posti_TI 时才在面板中显示文本 我找不到这个问题的解决方案,我尝试使用反应函数和条件面板但没有结果。 感谢您的帮助。

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    renderText() 可以包含逻辑,所以

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

    如果if() 返回FALSE,则renderText 返回NULL。如果你想明确一点,可以随时添加else NULLelse rturn(NULL)

    【讨论】:

    • input$type 定义在哪里?
    猜你喜欢
    • 2017-06-19
    • 2020-10-28
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多