Блестящая ошибка, нет выхода - PullRequest
0 голосов
/ 04 июля 2018

Мне нужно создать информационную панель, она будет принимать файл CSV в качестве входных данных, предоставленных пользователем, затем она выберет переменную из столбца объекта (средство и Uen) после выбора одной переменной, мы должны получить данные этой переменной в uen столбец из файла пользовательских данных, то после выбора данных 1 uen мы получим данные всех переменных для этого uen

a = read.csv("input_missing.csv")
ui <- fluidPage ( 
tabsetPanel (
tabPanel("Input Data", fluid = TRUE,

         titlePanel(title=div( "Risk Rating Model", align = "center")),

         wellPanel(
           fluidRow(width = 2,column(width =  3, fileInput(  "file1", "Import the data file", accept = c(".csv"))),
                    column(width =  2, selectInput(  "file2", "Entity Details", c(" ", "Facility Id", "UEN "), selected=" ")),
                    column(width =  2, selectInput('FacilityId', 'Facility Id', a$CCDM_FacilityId)),
                    column(width =  2, selectInput('UEN', 'UEN Id', list(),, multiple = TRUE))
           ),

           fluidRow(
             DT::dataTableOutput("contents")


           )

         ))))

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

output$contents <- renderTable({

inFile <- input$file1

if (is.null(inFile))
  return(NULL)

read.csv(inFile$datapath, header = input$header)
 })




 observe({
updateSelectizeInput(session, "UEN", choices = a$input$file2)  
       })


 # Filter data based on selections
  output$contents <- DT::renderDataTable(DT::datatable({

if (input$FacilityId != "All") {
  a <- a[a$CCDM_FacilityId == input$FacilityId,]
}
if (input$UEN != "All") {
  a <- a[a$UEN1 == input$UEN,]
}


a
 }))

 }

shinyApp(ui, server)

1 Ответ

0 голосов
/ 05 июля 2018

попробуйте изменить первый оператор renderTable на реактивный оператор, подобный этому

dta_table <- eventReactive(input$file1,{  
  inFile <- input$file1
  read.csv(inFile$datapath, header = input$header)
 })

и затем добавьте a <- dta_table() ко второму вызову renderTable

output$contents <- DT::renderDataTable(DT::datatable({
  a <- dta_table()
  if (input$FacilityId != "All") {
    a <- a[a$CCDM_FacilityId == input$FacilityId,]
  }
  if (input$UEN != "All") {
    a <- a[a$UEN1 == input$UEN,]
  }
  a
}))

Надеюсь, это поможет !!

...