Shiny R renderDataTable com tabela nula

Sep 08 2020

Qual é a melhor maneira de apenas renderizar uma tabela de dados com brilho se houver dados? No momento, estou recebendo o seguinte erro porque estou dizendo ao brilhante para renderizar uma tabela de dados, mesmo quando é NULL.

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

Meu código é dividido assim, onde leio os dados assim que o usuário escolhe um arquivo csv. Depois que um usuário escolhe um arquivo csv, o erro desaparece e tudo funciona bem. Como digo ao Shiny para não exibir uma tabela de dados até que um arquivo válido seja escolhido?

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

Tentei colocar o código de saída $ filetable <- .... após a linha read.csv ... na função filedata <- ..., mas também não funcionou. O que mais devo fazer aqui?

Respostas

1 Gourab Sep 08 2020 at 09:09

Você pode usar a função req (), isto irá verificar se o arquivo o arquivo está presente ou não, então irá para o código de procedimento

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

Use req(), como mostrado abaixo

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