View source: R/spsServerCollections.R
loadDF | R Documentation |
load a file to server end. It's designed to be used with a
input file source switch button.
It uses vroom::vroom to load the file. In SPS, this
function is usually combined as downstream of dynamicFileServer()
function on on the server side to
read the file into R. This loading function only works for parsing
tabular data, use vroom::vroom()
internally.
If no user data is uploaded, it will return the example dataset that is prepared by the developer. If the developer does not provide the dataset either, it will return a 8-row empty tibble.
loadDF(
choice,
data_init = NULL,
upload_path = NULL,
eg_path = NULL,
comment = "#",
delim = "\t",
col_types = vroom::cols(),
...
)
choice |
where this file comes from, one of 'upload' or example 'eg'? |
data_init |
a tibble to return if |
upload_path |
when |
eg_path |
when |
comment |
comment characters to parse the datafile, see help file of vroom::vroom |
delim |
delimiter characters to parse the data file, see help file of vroom::vroom |
col_types |
columns specifications, see help file of vroom::vroom |
... |
other params for vroom, see help file of vroom::vroom |
This is function is wrapped by the shinyCatch()
function, so it
will show loading information both on console and on UI. This function
prevents loading file errors to crash the Shiny app, so any kind of file upload will not
crash the app. To show message on UI, spsDepend("toastr")
must be used in Shiny UI
function, see examples.
returns a tibble and NULL
if parsing fails
if(interactive()){
# change value to 'local' to see the difference
spsOption("mode", value = "server")
ui <- fluidPage(
spsDepend("toastr"),
radioButtons(
"data_source", "Choose your data file source:",
c("Upload" = "upload", "Example" = "eg"),
selected = "eg"
),
dynamicFile("data_path", label = "input file"),
dataTableOutput("df")
)
server <- function(input, output, session) {
tmp_file <- tempfile(fileext = ".csv")
write.csv(iris, file = tmp_file)
upload_path <- dynamicFileServer(input, session, "data_path")
data_df <- reactive({
loadDF(choice = input$data_source,
upload_path = upload_path()$datapath,
delim = ",", eg_path = tmp_file)
})
output$df <- renderDataTable(data_df())
}
shinyApp(ui, server)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.