RenderDataTable brillant avec table nulle

Sep 08 2020

Quelle est la meilleure façon de rendre une table de données en brillant uniquement si des données existent? À l'heure actuelle, j'obtiens l'erreur suivante car je dis à Shiny de rendre une table de données, même lorsqu'elle est NULL.

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

Mon code est divisé comme ceci, où je lis les données une fois que l'utilisateur choisit un fichier csv. Une fois qu'un utilisateur a choisi un fichier csv, l'erreur disparaît et tout fonctionne correctement. Comment dire à Shiny de ne pas afficher de table de données tant qu'un fichier valide n'a pas été choisi?

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

J'ai essayé de mettre le code de sortie $ filetable <- .... après la ligne read.csv ... dans la fonction fileata <- ..., mais cela ne fonctionne pas non plus. Que dois-je faire d'autre ici?

Réponses

1 Gourab Sep 08 2020 at 09:09

Vous pouvez utiliser la fonction req (), cela vérifiera si le fichier le fichier est présent ou non puis il ira au code de procédure

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

Veuillez utiliser req(), comme indiqué ci-dessous

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