【问题标题】:Using observeEvent in shiny with null values在具有空值的闪亮中使用observeEvent
【发布时间】:2019-10-09 03:22:45
【问题描述】:

我正在为一个反应灵敏的问题而苦苦挣扎,希望能得到一些帮助。假设我有一个非常简单的应用程序,它显示给定一系列选择的平均高度:

library(tidyverse)
library(shiny)
library(DT)

df <- data.frame(cat = sample(LETTERS[1:4], 20, replace = T),
                 city = sample(c("Tokyo", "Madrid", "Paris"), 20, replace = T),
                 pop = sample(1:7, 20, replace = T),
                 altitude = sample(10000:15000, 20, replace = F))

ui <- fluidPage(
  selectizeInput("cat", "Category:",
                 choices = c("A", "B", "C", "D"),
                 multiple = T,
                 selected = "A"),
  selectizeInput("city","City:", 
                 choices = NULL, 
                 multiple = T),
  selectizeInput("pop","Population:", 
                 choices = NULL, 
                 multiple = T),
  dataTableOutput("table")
)

server <- function(input, output, session) {
  observeEvent(input$cat,{
    updateSelectInput(session,"city",
                      choices = df %>% filter(cat == input$cat) %>%
                        .$city %>% unique,
                      selected = "")
  })
  observeEvent(input$city,{
    updateSelectInput(session,"pop",
                      choices = df %>% filter(cat == input$cat & city == input$city) %>%
                        .$pop %>% unique,
                      selected = "")
  })
  output$table <- renderDataTable({
    df %>%
      filter(cat == input$cat, city == input$city, pop == input$pop %>% as.numeric) %>%
      summarise(mean_altitude = mean(altitude))
  })
}

# Run the application 
shinyApp(ui = ui, server = server)

我将如何修改此代码以允许在某些字段中选择空值并让其他选项对此完全反应?现在,当您从上到下选择每个字段时,它唯一的反应。我希望它能够响应空值并且顺序无关紧要。

我可以在查询时使用复杂的情况来做到这一点,但我的实际数据集有大约 10 个不同的输入,并且通过扩展大量不同的组合,所以这样做来处理每个可能的组合是不可行的。

【问题讨论】:

    标签: r shiny


    【解决方案1】:
    observeEvent(input$id, {
        code 
        ...
    }, ignoreNULL = FALSE)
    
    
    
    ?observeEvent
    

    这也是我最近的发现

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-02
      • 2018-08-17
      • 1970-01-01
      • 2020-05-24
      相关资源
      最近更新 更多