100 lines
1.8 KiB
R
100 lines
1.8 KiB
R
library(shiny)
|
|
library(bslib)
|
|
|
|
# Define UI for slider demo app ----
|
|
ui <- page_sidebar(
|
|
|
|
# App title ----
|
|
title = "Uploading Files",
|
|
|
|
# Sidebar panel for inputs ----
|
|
sidebar = sidebar(
|
|
|
|
# Input: Select a file ----
|
|
fileInput(
|
|
"file1",
|
|
"Choose CSV File",
|
|
multiple = TRUE,
|
|
accept = c(
|
|
"text/csv",
|
|
"text/comma-separated-values,text/plain",
|
|
".csv"
|
|
)
|
|
),
|
|
|
|
# Horizontal line ----
|
|
tags$hr(),
|
|
|
|
# Input: Checkbox if file has header ----
|
|
checkboxInput("header", "Header", TRUE),
|
|
|
|
# Input: Select separator ----
|
|
radioButtons(
|
|
"sep",
|
|
"Separator",
|
|
choices = c(
|
|
Comma = ",",
|
|
Semicolon = ";",
|
|
Tab = "\t"
|
|
),
|
|
selected = ","
|
|
),
|
|
|
|
# Input: Select quotes ----
|
|
radioButtons(
|
|
"quote",
|
|
"Quote",
|
|
choices = c(
|
|
None = "",
|
|
"Double Quote" = '"',
|
|
"Single Quote" = "'"
|
|
),
|
|
selected = '"'
|
|
),
|
|
|
|
# Horizontal line ----
|
|
tags$hr(),
|
|
|
|
# Input: Select number of rows to display ----
|
|
radioButtons(
|
|
"disp",
|
|
"Display",
|
|
choices = c(
|
|
Head = "head",
|
|
All = "all"
|
|
),
|
|
selected = "head"
|
|
)
|
|
),
|
|
|
|
# Output: Data file ----
|
|
tableOutput("contents")
|
|
)
|
|
|
|
# Define server logic to read selected file ----
|
|
server <- function(input, output) {
|
|
output$contents <- renderTable({
|
|
# input$file1 will be NULL initially. After the user selects
|
|
# and uploads a file, head of that data file by default,
|
|
# or all rows if selected, will be shown.
|
|
|
|
req(input$file1)
|
|
|
|
df <- read.csv(
|
|
input$file1$datapath,
|
|
header = input$header,
|
|
sep = input$sep,
|
|
quote = input$quote
|
|
)
|
|
|
|
if (input$disp == "head") {
|
|
return(head(df))
|
|
} else {
|
|
return(df)
|
|
}
|
|
})
|
|
}
|
|
|
|
# Create Shiny app ----
|
|
shinyApp(ui, server)
|