Использовать CSV-файл по умолчанию, когда файл не загружен в блестящее приложение - PullRequest
0 голосов
/ 08 апреля 2019

У меня блестящее приложение, в котором пользователь загружает два CSV-файла - набор справочных данных и набор тестовых данных.Наборы данных обрабатываются в реактивных выражениях в коде сервера, а затем выходные данные используются для создания таблиц и графиков.

Я хочу использовать набор эталонных данных по умолчанию, если набор эталонных данных не загружен.Как мне заставить мое реактивное выражение возвращать данные по умолчанию, если данные не были загружены?

Я попытался загрузить свои данные в начале приложения (назвав его default.ref.data, а затем используя следующее в коде сервера:

ref.data=reactive({
   req(input$ref.upload)
   # read the data frame that has been uploaded
   df.ref1 <- read.csv(input$ref.upload$datapath) 

   #do some stuff

   return(df.ref1)
   if(is.null(input$files)) return(default.ref.data)
})

Последнийстрока пытается вернуть файл по умолчанию, который я прочитал ранее, если входной файл не загружен. Это не работает. Что мне делать? Стоит ли смотреть на него под другим углом?

1 Ответ

1 голос
/ 08 апреля 2019

Примерно так должно работать:

library(shiny)

ui <- fluidPage(fileInput("file1", "Choose CSV File",
                          multiple = FALSE,
                          accept = c("text/csv",
                                     "text/comma-separated-values,text/plain",
                                     ".csv")), tableOutput("tbl"))

server <- function(input, output) {

  get_file_or_default <- reactive({
    if (is.null(input$file1)) {
      mtcars
    } else {
      read.csv(input$file1$datapath)
    }
  })

  output$tbl <- renderTable(get_file_or_default())
}

shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...