有人可以指出我如何使这个下载zip功能在server.R中工作?当我运行它时,我收到以下错误:
阅读错误:9
library(shiny)
# server.R
server <- function(input, output) {
datasetInput <- reactive({
return(list(rock=rock, pressure=pressure, cars=cars))
})
output$downloadData <- downloadHandler(
filename = 'pdfs.zip',
content = function(fname) {
tmpdir <- tempdir()
setwd(tempdir())
print(tempdir())
fs <- c("rock.csv", "pressure.csv", "cars.csv")
write.csv(datasetInput()$rock, file = "rock.csv", sep =",")
write.csv(datasetInput()$pressure, file = "pressure.csv", sep =",")
write.csv(datasetInput()$cars, file = "cars.csv", sep =",")
print (fs)
zip(zipfile=fname, files=fs)
},
contentType = "application/zip"
)
}
# ui.R
ui <- shinyUI(fluidPage(
titlePanel('Downloading Data'),
sidebarLayout(
sidebarPanel(
downloadButton('downloadData', 'Download')
),
mainPanel()
)
)
)
shinyApp(ui = ui, server = server)
答案 0 :(得分:3)
解决方案:在if(file.exists(paste0(fname, ".zip"))) {file.rename(paste0(fname, ".zip"), fname)}
致电后加入zip()
。
答案 1 :(得分:1)
最重要的解决方案仍然不适合我。我在Linux服务器上使用RStudio Server。问题是RStudio无法自动定位zip可执行文件的路径。我不得不手动指定它。在命令行中,which zip
向我显示/usr/bin/zip
。
所以,我只需要在代码的顶部设置R_ZIPCMD环境变量。
Sys.setenv(R_ZIPCMD="/usr/bin/zip")
来源:zip()
的帮助文件提及R_ZIPCMD。