我正在尝试向for
函数添加downloadHandler
循环,以便下载n
个文件,其中n
是用户输入。在下面的示例中,为了简单起见,我没有使用n
,我只是想让循环工作,然后我将修改代码并添加反应性等。< / p>
以下是单次下载的标准代码:
output$downloadData <- downloadHandler(
filename = function() {paste('test', '.csv', sep='') },
content = function(file) {write.csv(df, file)}
)
我尝试在此处添加for
循环但没有成功,此处:
output$downloadData <- downloadHandler(
for (i in 1:5) {
filename = function() {paste('test', i, '.csv', sep='') }
content = function(file) {write.csv(df, file)}
}
)
在这里:
output$downloadData <- for (i in 1:5) {
downloadHandler(
filename = function() {paste('test', i, '.csv', sep='')},
content = function(file) {write.csv(df, file)}
)
}
这是一款简化的应用,可以下载1个文件test.csv
。我想通过单击按钮下载多个文件。所以,让我们说3个文件,test1.csv
,test2.csv
,test3.csv
:
library(shiny)
#### SERVER ####
server <- shinyServer(function(input, output) {
df = as.data.frame(1:10)
output$table = renderDataTable({df})
#create download output
output$downloadData <- downloadHandler(
filename = function() {paste('test', '.csv', sep='')},
content = function(file) {write.csv(df, file)}
)
})
#### UI ####
ui <- shinyUI(fluidPage(
sidebarLayout(
sidebarPanel(
h3(textOutput("input")),
numericInput("n", h5("n"), value = ''),
downloadButton('downloadData', 'Download')
),
mainPanel(
dataTableOutput("table")
)
)
))
shinyApp(ui<-ui, server<-server) #launch app
对此的任何帮助将不胜感激。感谢。