Я пытаюсь найти дату создания CSV-файла, загруженного в Shiny.
Я попробовал 'file.info (userFile () $ datapath) $ ctime' в примере ниже. Это возвращает дату создания временного файла, который содержит загруженные данные, но не дату создания самого файла:
file.info ( "example.csv") $ CTime
[1] "2019-01-08 18:34:47 PST"
Вот воспроизводимый пример:
library("shiny")
# Module UI function
csvFileInput <- function(id, label = "CSV file") {
# Create a namespace function using the provided id
ns <- NS(id)
tagList(
fileInput(ns("file"), label),
checkboxInput(ns("heading"), "Has heading"),
selectInput(
ns("quote"),
"Quote",
c(
"None" = "",
"Double quote" = "\"",
"Single quote" = "'"
)
)
)
}
# Module server function
csvFile <- function(input,
output,
session,
stringsAsFactors) {
# The selected file, if any
userFile <- reactive({
# If no file is selected, don't do anything
validate(need(input$file, message = FALSE))
input$file
})
# The user's data, parsed into a data frame
dfUpload <- reactive({
read.csv(
userFile()$datapath,
header = input$heading,
quote = input$quote,
stringsAsFactors = stringsAsFactors
)
})
# input$file data frame
dfInfo <- reactive({
input$file
})
# userfile() creation date
txtFileDate <- reactive({
msg1 <- sprintf("File Date: %s",
as.Date(file.info(userFile()$datapath)$ctime))
cat(msg1, "\n")
})
# We can run observers in here if we want to
observe({
msg <- sprintf("File %s was uploaded", userFile()$name)
cat(msg, "\n")
})
# Return list of reactive outputs
return(list(
df.Id01 = reactive({
dfUpload()[1,]
}),
df.Id02 = reactive({
dfInfo()
}),
txt.Id01 = reactive({
txtFileDate()
})
))
}
ui <- fluidPage(sidebarLayout(
sidebarPanel(csvFileInput("datafile", "User data (.csv format)")),
mainPanel(
tableOutput("table01"),
tableOutput("table02"),
verbatimTextOutput("text01")
)
))
server <- function(input, output, session) {
lstOut <- callModule(csvFile, "datafile",
stringsAsFactors = FALSE)
output$table01 <- renderTable({
lstOut$df.Id01()
})
output$table02 <- renderTable({
lstOut$df.Id02()
})
output$text01 <- renderPrint({
lstOut$txt.Id01()
})
}
shinyApp(ui = ui, server = server)