Блестящее приложение: чтение файлов .csv в соответствии с выбором выпадающего меню - PullRequest
1 голос
/ 24 января 2020

Я хочу разработать приложение Shiny, визуализирующее набор данных.

Данные доступны в виде набора файлов CSV, загруженных из Европейского агентства по охране окружающей среды (см. https://www.eea.europa.eu/themes/air ). Файл Stations.csv содержит информацию о каждой станции. Существует один файл CSV для каждой станции и каждый загрязнитель (PM2.5, PM10, SO2 и NO2), измеренный на станции (не каждый загрязнитель измеряется на каждой станции). Имена файлов имеют форму EoICode_PollutantCode.csv. Каждая строка этих файлов содержит ежечасные измерения этого загрязнителя на этой станции.

Есть более 300 файлов .csv, с которыми мне нужно работать, поэтому мне было интересно, можно ли прочитать нужные файлы .csv в зависимости от на выбор пользователя из выпадающего меню в пользовательском интерфейсе. Другими словами, пользователь выбирает желаемый загрязнитель, например, SO2, затем приложение считывает все файлы .csv с шаблоном имени '* _SO2.csv'. Или даже лучше, чтобы также отфильтровать потенциальный файл .csv для чтения в зависимости от станции. Например, в первом раскрывающемся меню пользователь выбирает загрязнитель S02, затем во втором раскрывающемся меню пользователь выбирает станцию, например, Прагу (или несколько станций), затем передает выбор с помощью кнопки отправки, и приложение читает «Prague_SO2». .csv ', затем строит графики и т. д. c.

Есть идеи? Как я чувствую себя потерянным там

1 Ответ

0 голосов
/ 25 января 2020

Для этого ответа вам нужно будет поработать над вашим datasets объектом.

library(shiny)
library(DT)

# datasets <- list.files("~/Downloads/Wine_example/", pattern=".*.csv$")

datasets <- list(
  `red_wine` = read.csv("~/Downloads/Wine_example/winequality-red.csv"),
  `white_wine` = read.csv("~/Downloads/Wine_example/winequality-white.csv")
)


ui <- fluidPage(
  selectInput("data", "Pick a wine dataset:", choices = names(datasets)),
  dataTableOutput("table")
  )

server <- function(input, output, session) {
  output$table <- renderDataTable({
    req(input$data)
    datasets[[input$data]]
  })
}

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