使用带有反应参数的函数来生成表

时间:2018-04-28 13:34:57

标签: r shiny

我的目标是使用renderTable创建一个反应表(tab.11),其结构如下(对不起我的英语......):

  1. data.frame“malprof”包含字段“Year”,“ASL”,“ATECO_Macro”,“ATECO_2cfr”和“ATECO_2cfr”
  2. inputId $ ASL有4个值,“TOSCANA”,“ASL CENTRO”,“ASL NORD-OVEST”,“ASL SUD-EST”
  3. inputId $ Anno将所有可能的值存储在data.frame
  4. 的“Year”字段中
  5. 在tabPanel“XI Reports for Productive Activity”中有一个radioButton,其inputId为“levelAteco” 值“Sections”,“2 digits”,“Complete”(3个字段的名称)
  6. 函数tab.l1()通过switch命令生成一个表,该命令取决于inputId $ levelAteco的值,激活其中一个函数 tab.11.a(),tab.11.b()和tab.11.c()
  7. 最后的命令输出$ tab_11< - renderTable({tab.11(input $ Year)})应该通过输入$ Anno作为tab.11()的参数来显示表。 但控制台显示错误:

    聆听http://127.0.0.1:5457 警告:tab.11中的错误:未使用的参数(输入$ Anno) 堆栈跟踪(最里面的第一个):     79:renderTable [C:\ Users \ Gianpaolo \ Desktop \ ReportMalprof_ShinyApp \ App / app.R#129]     78:功能     77:origRenderFunc     76:输出$ tab_11      1:shiny :: runApp

  8. 和app:

    "Error: unused argumenti(input$Anno) 
    

    这是代码,你能告诉我我做错了什么吗?

    require(shiny)
    require(dplyr)
    require(reshape2)
    require(stringr)
    require(shinythemes)
    
    #load("App/dati.RData")
    
    load("dati.RData")
    
    #### UI ####
    ui <- fluidPage(
      theme = shinytheme("superhero"),
      fluidRow(column(2, selectInput(inputId = "Anno",
                                 label = "Anno di manifestazione",
                                 choices = as.list(unique(malprof$Anno)),
                                 selected = max(malprof$Anno),
                                 multiple = FALSE)),
               column(2, selectInput(inputId = "ASL",
                                 label = "Territorio",
                                 choices = list("TOSCANA", "ASL CENTRO","ASL NORD-OVEST","ASL SUD-EST"),
                                 selected = "Toscana",
                                 multiple = FALSE))),
      titlePanel("Elenco tabelle"),
      navlistPanel(
    
      #### Tab XI ####
      tabPanel(title = "XI. Segnalazioni per Settore di Attivita' Produttiva",
               h3(textOutput(outputId = "tab_11_text"), style = "font-size:100%"),
               radioButtons(inputId = "livelloAteco",
                        label = "Livello Ateco",
                        choices = list("Sezioni", "2 cifre", "Completo"),
                        selected = "Sezioni",
                        inline = TRUE),
               div(tableOutput(outputId = "tab_11"), style = "font-size:80%")
               )
         )
    )
    
    #### SERVER ####
    server <- function(input, output) {
    
      fargs <- list(big.mark=".", decimal.mark=",") 
    
      # ASL
      rg <- filter(malprof, ASL == "TOSCANA")
      no <- filter(malprof, ASL == "ASL NORD-OVEST")
      se <- filter(malprof, ASL == "ASL SUD-EST")
      ce <- filter(malprof, ASL == "ASL CENTRO")
    
      selezioneASL <- reactive({switch(input$ASL, 
                                        "TOSCANA" = rg,
                                        "ASL CENTRO" = ce,
                                        "ASL NORD-OVEST" = no,
                                        "ASL SUD-EST" = se)})
    
    
    
      #### Tabella XI - Distribuzione delle segnalazioni per Settore di Attivita' Produttiva ####
    
    
      # Livello ATECO
        tab.11.a <- function(x){
                    tabella <- selezioneASL() %>% filter(anno == x) %>%
                    group_by(ATECO_Macro, nesso) %>%
                    summarise(N = n()) %>%
                    dcast(ATECO_Macro ~ nesso, value.var = "N", fill = 0, sum, margins=TRUE)
    
                    tabella$ATECO_Macro <- as.character(tabella$ATECO_Macro)
                    tabella$ATECO_Macro[nrow(tabella)] <- "TOTALE"
    
                    perc_pos <- round(tabella$`1 - Positivo`/tabella$`1 - Positivo`[nrow(tabella)]*100, digits = 1)
                    perc_seg <- round(tabella$`(all)`/tabella$`(all)`[nrow(tabella)]*100, digits = 1)
                    rapp <- round((tabella$`1 - Positivo`/tabella$`(all)`)*100, digits = 1)
                    tabella <- data.frame(tabella, perc_pos, perc_seg, rapp)
                    tabella <- tabella %>% select(ATECO_Macro, X.all., perc_seg, X1...Positivo, perc_pos, rapp)
    
                    names(tabella) <- c("ATECO", "Casi segnalati", "%", "Casi con nesso  positivo", "%", "Rapporto tra positivi e segnalati")
                    tabella
                }
    
        tab.11.b <- function(x){
                    tabella <- selezioneASL() %>% filter(anno == x) %>%
                    group_by(ATECO_2cfr, nesso) %>%
                    summarise(N = n()) %>%
                    dcast(ATECO_2cfr ~ nesso, value.var = "N", fill = 0, sum, margins=TRUE)
    
                    tabella$ATECO_2cfr <- as.character(tabella$ATECO_2cfr)
                    tabella$ATECO_2cfr[nrow(tabella)] <- "TOTALE"
    
                    perc_pos <- round(tabella$`1 - Positivo`/tabella$`1 - Positivo`[nrow(tabella)]*100, digits = 1)
                    perc_seg <- round(tabella$`(all)`/tabella$`(all)`[nrow(tabella)]*100, digits = 1)
                    rapp <- round((tabella$`1 - Positivo`/tabella$`(all)`)*100, digits = 1)
                    tabella <- data.frame(tabella, perc_pos, perc_seg, rapp)
                    tabella <- tabella %>% select(ATECO_2cfr, X.all., perc_seg, X1...Positivo, perc_pos, rapp)
    
                    names(tabella) <- c("ATECO", "Casi segnalati", "%", "Casi con nesso  positivo", "%", "Rapporto tra positivi e segnalati")
                    tabella
                }
    
        tab.11.c <- function(x){
                    tabella <- selezioneASL() %>% filter(anno == x) %>% 
                    group_by(ATECO_completo, nesso) %>%
                    summarise(N = n()) %>%
                    dcast(ATECO_completo ~ nesso, value.var = "N", fill = 0, sum, margins=TRUE)
    
                    tabella$ATECO_completo <- as.character(tabella$ATECO_completo)
                    tabella$ATECO_completo[nrow(tabella)] <- "TOTALE"
    
                    perc_pos <- round(tabella$`1 - Positivo`/tabella$`1 - Positivo`[nrow(tabella)]*100, digits = 1)
                    perc_seg <- round(tabella$`(all)`/tabella$`(all)`[nrow(tabella)]*100, digits = 1)
                    rapp <- round((tabella$`1 - Positivo`/tabella$`(all)`)*100, digits = 1)
                    tabella <- data.frame(tabella, perc_pos, perc_seg, rapp)
                    tabella <- tabella %>% select(ATECO_completo, X.all., perc_seg, X1...Positivo, perc_pos, rapp)
    
                    names(tabella) <- c("ATECO", "Casi segnalati", "%", "Casi con nesso  positivo", "%", "Rapporto tra positivi e segnalati")
                    tabella
                }  
    
        tab.11 <- reactive({
                    selezioneLivelloAteco <- switch(input$livelloAteco,
                                                    "Sezioni" = tab.11.a,
                                                    "2 cifre" = tab.11.b,
                                                    "Completo" = tab.11.c)
                            })                                     
    
        output$tab_11 <- renderTable({tab.11(input$Anno)},
                                     display=c("s","s","d","s","d","s","s"),
                                     spacing="s",
                                     align = "lccccc",
                                     na="--", format.args=fargs)  
    }
    
    # Run the application 
    shinyApp(ui = ui, server = server)
    

0 个答案:

没有答案