Я создаю приложение 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")
))
Я уверен, что что-то мне не хватает, но я просто не понимаю, что