Shiny R renderDataTable с нулевой таблицей

Sep 08 2020

Как лучше всего отобразить таблицу данных блестящей, если данные существуют? Прямо сейчас я получаю следующую ошибку, потому что говорю shiny визуализировать таблицу данных, даже если она равна NULL.

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

Мой код разделен следующим образом: я читаю данные, как только пользователь выбирает файл csv. После того, как пользователь выбирает файл csv, ошибка исчезает, и все работает нормально. Как мне сказать Shiny не отображать таблицу данных, пока не будет выбран действительный файл?

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

Я пробовал поместить выходной код $ filetable <- .... после строки read.csv ... в функцию filedata <- ..., но это тоже не работает. Что еще мне здесь делать?

Ответы

1 Gourab Sep 08 2020 at 09:09

Вы можете использовать функцию req (), это проверит, присутствует ли файл файл или нет, тогда он перейдет к исходному коду

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

Пожалуйста, используйте req(), как показано ниже

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