R renderDataTable lucido con tabella nulla

Sep 08 2020

Qual è il modo migliore per rendere una tabella di dati brillante solo se i dati esistono? In questo momento, ricevo il seguente errore perché sto dicendo a shiny di eseguire il rendering di una tabella dati, anche quando è NULL.

    Warning in file(file, "rt") :
    cannot open file '\': No such file or directory
    Warning: Error in file: cannot open the connection

Il mio codice è suddiviso in questo modo, dove leggo i dati una volta che l'utente sceglie un file csv. Dopo che un utente sceglie un file CSV, l'errore scompare e tutto funziona correttamente. Come faccio a dire a Shiny di non visualizzare una tabella dati finché non viene scelto un file valido?

filedata <- reactive({
  if (is.null(input$file_selector)){ # User has not uploaded a file yet return(NULL) } else { read.csv(paste0(parseDirPath(c(home = 'C:\\Users\\Ruben'), file_dir()),'\\',input$file_selector),skip=1)}
})

output$filetable <- renderDataTable({
  filedata()
})

Ho provato a inserire il codice di output $ filetable <- .... dopo la riga read.csv ... nella funzione filedata <- ..., ma neanche questo funziona. Cos'altro dovrei fare qui?

Risposte

1 Gourab Sep 08 2020 at 09:09

Puoi usare la funzione req (), questo controllerà se il file il file è presente o meno, quindi andrà al codice procedente

filedata <- reactive({
  file <-input$file_selector
  req(file)
  read.csv(paste0(parseDirPath(c(home = 'C:\\Users\\Ruben'), file_dir()),'\\',file),skip=1)}
})
1 YBS Sep 08 2020 at 08:55

Si prega di utilizzare req(), come mostrato di seguito

filedata <- reactive({
  req(input$file_selector) read.csv(paste0(parseDirPath(c(home = 'C:\\Users\\Ruben'), file_dir()),'\\',input$file_selector),skip=1)
})