Shiny R renderDataTable con tabla nula

Sep 08 2020

¿Cuál es la mejor manera de representar solo una tabla de datos en brillante si existen datos? En este momento, recibo el siguiente error porque le digo a shiny que represente una tabla de datos, incluso cuando es NULL.

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

Mi código se divide así, donde leo los datos una vez que el usuario elige un archivo csv. Después de que un usuario elige un archivo csv, el error desaparece y todo funciona bien. ¿Cómo le digo a Shiny que no muestre una tabla de datos hasta que se elija un archivo válido?

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()
})

Intenté poner el código de salida $ filetable <- .... después de la línea read.csv ... en la función filedata <- ..., pero eso tampoco funciona. ¿Qué más debería estar haciendo aquí?

Respuestas

1 Gourab Sep 08 2020 at 09:09

Puede usar la función req (), esto verificará si el archivo el archivo está presente o no, luego irá al código de procedimiento

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

Utilice req(), como se muestra a continuación

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