2016-12-12 4 views
1

私は仕事でかなり光沢のあるアプリを持っていますが、改善して機能を追加したいと思います。私がしたいことはあるselectInputエラーを更新しました "強制的なエラー(ui):オブジェクト 'ui'が見つかりません"

NITG <- c("L447", "G24M", "G112", "F144", "B33D", "M4A1", "G432", "K54N", "K312", "K24K") 
RC <- c("7E", "8E", "7D", "2G", "2B", "1D", "2J", "7M", "4H", "1D") 
Pheno <- c("ZZ", "SS", "ZE", "ZZ", "ZZ", "ZLMN", "BB", "ZA", "GG", "ZZ") 
GRADES <- c("D", "C", "D", "D", "C", "A", "D", "D", "D", "D") 

data <- data.frame(NITG, RC, Pheno, GRADES) 

私のデータがどのように見える

私は私の変数のためのモダリティを選択すると、例えばNITGのための「L447」を取ることができます、私だけ表示したいですRC変数フィルターのRCの "7E"と私のデータに入ったRCの全てではなく、 "ZZ"のPheno変数など... Excelフィルターに似たものが欲しいです。たぶん、私は今すぐ止まっているいくつかの反応機能が必要です。ヘルプ

ui <- fluidPage(

    titlePanel("Referentiel Renault Nissan"), 

    sidebarLayout(
    sidebarPanel(selectInput("nitg", 
          "NITG:", 
          c("All", unique(filtered_df$NITG)), 
          selected = "All", 
          multiple = TRUE), 
       selectInput("pheno", 
          "Phenomenon:", 
          c("All", unique(filtered_df$Pheno)), 
          selected = "All", 
          multiple = TRUE), 
       selectInput("rc", 
          "RC:", 
          c("All", unique(filtered_df$RC)), 
          selected = "All", 
          multiple = TRUE), 
       selectInput("grade", 
          "Grades:", 
          c("All", unique(filtered_df$GRADES)), 
          selected = "All", 
          multiple = TRUE) 
    ), 

    mainPanel(
     DT::dataTableOutput("tableprint") 
    ) 
) 
) 

server <- function(input, output, session) { 

    output$tableprint <- DT::renderDataTable({ 

    # Data 

    NITG <- c("L447", "G24M", "G112", "F144", "B33D", "M4A1", "G432", "K54N", "K312", "K24K") 
    RC <- c("7E", "8E", "7D", "2G", "2B", "1D", "2J", "7M", "4H", "1D") 
    Pheno <- c("ZZ", "SS", "ZE", "ZZ", "ZZ", "ZLMN", "BB", "ZA", "GG", "ZZ") 
    GRADES <- c("D", "C", "D", "D", "C", "A", "D", "D", "D", "D") 

    df <- data.frame(NITG, RC, Pheno, GRADES) 

    # Create filters based on inputs 
    f1 <- if("All" %in% input$nitg){ 
     df$NITG 
    } else { 
     input$nitg 
    } 

    f2 <- if("All" %in% input$pheno){ 
     df$Pheno 
    } else { 
     input$pheno 
    } 

    f3 <- if("All" %in% input$rc){ 
     df$RC 
    } else { 
     input$rc 
    } 

    f4 <- if("All" %in% input$grade){ 
     df$GRADES 
    } else { 
     input$grade 
    } 

    # Filter data 
    filtered_df <- filter(df, 
          NITG %in% f1, 
          Pheno %in% f2, 
          RC %in% f3, 
          GRADES %in% f4) 

    # Update selectInput choices based on the filtered data. Update 'selected' to reflect the user input. 
    updateSelectInput(session, "nitg", choices = c("All", filtered_df$NITG), selected = input$nitg) 
    updateSelectInput(session, "pheno", choices = c("All", filtered_df$Pheno), selected = input$pheno) 
    updateSelectInput(session, "rc", choices = c("All", filtered_df$RC), selected = input$rc) 
    updateSelectInput(session, "grade", choices = c("All", filtered_df$GRADES), selected = input$grade) 




    datatable(filtered_df) 

    }) 
} 

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

答えて

1

ため

ありがとうございますupdateSelectInput()の実装が必要になります。デモはhereです。これはあなたのものに似たコードの小さな例です。

library(shiny) 
library(dplyr) 
library(DT) 

ui <- fluidPage(

    titlePanel("Title"), 

    sidebarLayout(
    sidebarPanel(width=3, 
       selectInput("filter1", "Filter 1", multiple = T, choices = c("All", LETTERS), selected = "All"), 
       selectInput("filter2", "Filter 2", multiple = T, choices = c("All", as.character(seq.int(1, length(letters), 1))), 
           selected = "All") 
    ), 

    mainPanel(
     DT::dataTableOutput("tableprint") 
    ) 
) 
) 

server <- function(input, output, session) { 

    output$tableprint <- DT::renderDataTable({ 

    # Data 
    df <- tibble(Letters = LETTERS, Numbers = as.character(seq.int(1, length(letters), 1))) 

    # Create filters based on inputs 
    f1 <- if("All" %in% input$filter1) LETTERS else input$filter1 
    f2 <- if("All" %in% input$filter2) as.character(seq.int(1, length(letters), 1)) else input$filter2 

    # Filter data 
    filtered_df <- filter(df, 
          Letters %in% f1, 
          Numbers %in% f2) 

    # Update selectInput choices based on the filtered data. Update 'selected' to reflect the user input. 
    updateSelectInput(session, "filter1", choices = c("All", filtered_df$Letters), selected = input$filter1) 
    updateSelectInput(session, "filter2", choices = c("All", filtered_df$Numbers), selected = input$filter2) 

    datatable(filtered_df) 

    }) 
} 

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

ありがとう、私は例に従ってくれてありがとう、私は適用lauchについて1つのエラーを得る –

関連する問題