Кнопка загрузки нескольких файлов в блестящем приложении - PullRequest
0 голосов
/ 05 июня 2019

Я создаю приложение Shiny и пытаюсь добавить кнопку загрузки для загрузки CSV-файлов (таблицы взяты из базы данных). В основном у меня есть checkboxgroupInput с 4 значениями, каждое значение соответствует отдельной таблице, и кнопка должна загрузить таблицы, которые отмечены галочкой, представляет собой один zip-файл

Я пробовал разные версии моего кода, даже если он не выдает никаких ошибок, когда я запускаю приложение, при нажатии кнопки загрузки оно пытается загрузить несуществующие файлы. Я думаю, что for никогда не выполняется, но я не понимаю почему. Поэтому моя идея состояла в том, чтобы заполнить selectedCountry с помощью ifelse, а затем записать каждый элемент как csv и создать ziip с помощью csv. Я попытался загрузить одну таблицу, поэтому ITALY_DB и т. Д. Не являются пустыми или нулевыми, они работают правильно.

server.R
Italy_tbl <- data.frame(ITALY_DB())
ne_tbl <- data.frame(NE_DB())
turkey_tbl <- data.frame(TURKEY_DB())
usa_tbl <- data.frame(USA_DB())
selectedCountry<- vector()

observeEvent(input$country,{
  ifelse (input$country == "Italy",selectedCountry <- 
  C(selectedCountry,Italy_tbl), selectedCountry<-selectedCountry)

  ifelse (input$country == "Turkey",selectedCountry <- 
  C(selectedCountry,turkey_tbl),selectedCountry<-selectedCountry)

  ifelse (input$country == "Netherlands",selectedCountry <-
  C(selectedCountry,ne_tbl ),selectedCountry<-selectedCountry)

  ifelse (input$country == "USA",selectedCountry <- 
  C(selectedCountry,usa_tbl),selectedCountry<-selectedCountry)

  })

output$download <- downloadHandler(


filename = function() {
  paste0(input$country,".zip")

  #paste(input$country, ".csv", sep = "")
},


content = function(file) {


  #go to a temp dir to avoid permission issues
  owd <- setwd(tempdir())
  print(tempdir())
  on.exit(setwd(owd))
  files <- NULL;

  for(i in selectedCountry){

    fileName <- paste(input$country,"_0",".csv",sep = "")
    write.csv(selectedCountry[i],fileName,sep = ';', row.names = F, 
    col.names = T)
    files <- c(fileName,files)


    }
   zip(file,files)


  }
)




  ui.R

  column(3,inputPanel( 
  sliderInput('yearSlider', 'Select Years', sep="",
  min=2009, max=2018, step=1, value =c(2009,2018)),


  (checkboxGroupInput("country",h4('Select Countries'),
  choices = list("Italy" = 1,
                 "Netherlands" = 2,                                                                   
                 "Turkey" = 3,
                 "USA" = 4),
                selected = 1)),
  radioButtons(
               inputId = 'plotCount'
               , label   = 'Plot Count'
               , choices = as.character(1:2)
               , inline=T
                ),
               downloadButton("download", "Download Data")
     ))

Я уверен, что что-то мне не хватает, но я просто не понимаю, что

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