get () имя загруженного файла в блестящем - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть простой вопрос относительно моего фрагмента кода ниже.

library(shiny)
ui <- fluidPage(

  fileInput("x", "upload file", accept = c(
    "text/csv",
    "text/comma-seperated-values, text/plain",
    ".csv")),

  tableOutput("my_csv")
)

server <- function(input, output) {


  csv <- reactive({
    inFile <- input$x
    if (is.null(inFile))
      return(NULL)
    df<- read.csv2(inFile$datapath, header=T)
    return(df)
  })

  output$my_csv <- renderTable({
    validate(need(!is.null(csv()),'no file yet.'))
      csv()
  })
}


shinyApp(ui, server)

Мне нужна функция типа get () для печати имени загруженного csv-файла.На следующем шаге я хочу создать список (с именем «list») с загруженным файлом в качестве первого объекта с именем файла.Итак, если имя загруженного файла - «squirrel.csv» и я вызываю список $ squirrel.csv, я хочу просмотреть таблицу.

1 Ответ

0 голосов
/ 18 сентября 2018

Вы должны извлечь basename из поля name в input$x (x, потому что ваш inputId называется x).

Добавить в серверную часть:

output$my_csv_name <- renderText({
  # Test if file is selected
  if (!is.null(input$x$datapath)) {
      # Extract file name (additionally remove file extension using sub)
      return(sub(".csv$", "", basename(input$x$name)))
  } else {
      return(NULL)
  }
})

В пользовательскую часть добавьте следующую строку для отображения имени файла:

textOutput("my_csv_name")
...