Home > OS >  Why does using renderPrint() in combination with a .csv file read by read_csv2 produce a strange ind
Why does using renderPrint() in combination with a .csv file read by read_csv2 produce a strange ind

Time:09-23

I have a problem when I use renderPrint() in combination with a .csv file uploaded by the user and read by read_csv2(). I always get a strange kind of indexing bar before the actual output.

When I replace read_csv2() with base R's read.csv2() the indexing bar disappears. Therefore, my guess is that the problem is somehow related to the fact that read_csv2() reads the .csv file as tibble and not as data.frame. Alternatively, I also tried vroom::vroom(), but the problem with the progress bar still remains.

In my app I would like to use either read_csv2() or vroom::vroom() as they are both noticeably faster than read.csv2().

My reprex:

library(shiny)
library(readr)

ui <- fluidPage(
  fileInput(
    inputId = "upload",
    label = "Upload file:"
  ),
  verbatimTextOutput("text")
)


server <- function(input, output, session) {
  data <- reactive({
    req(input$upload)
    read_csv2(input$upload$datapath)
  })

  output$text <-
    renderPrint({
      class(data())
    })
}


shinyApp(ui, server)

Output in Shiny app:

indexing 0.csv [============================================================================================] ?, eta:  0s
                                                                                                                         
[1] "spec_tbl_df" "tbl_df"      "tbl"         "data.frame" 

CodePudding user response:

The progress bar is shown by readr package by default. You can disable them using options.

options(readr.show_progress = FALSE)
  • Related