【发布时间】:2018-01-14 14:33:50
【问题描述】:
我已经构建了一个将数据帧存储在反应值中的应用程序。然后我有一个 UI 下载按钮,可以将该数据框下载到 CSV 文件中。它运行良好,直到 CSV 文件变得非常大。我估计大约 100MB,但很难确定。
我的代码不起眼 - 但一个最小的可重现示例可能如下。似乎在本地运行它和在我的 Shiny Server 实例 (Amazon EC2) 上运行它可能有所不同。
ui.R
shinyUI(downloadButton("goDownload","Download Large File"))
服务器.R
library(shiny)
shinyServer(function(input, output, session) {
op <- reactiveValues(data = NULL)
op$dataOp<-data.frame(col1=seq(0:30000000),col2=seq(30000000:0)
dataOp <- reactive({
if (!is.null(op$dataOp)){
op$Labels
} else {
print("no op$dataOp")
}
})
output$goDownload<- downloadHandler(
filename = function() { paste('Data.csv', sep='') },
content = function(filename) {
write.csv(dataOp(), filename, row.names = F)
})
})
【问题讨论】:
-
我的猜测是这个问题只发生在 rstudio 内置浏览器中,而不发生在 外部浏览器中?
-
我在 Chrome 中运行。希望就这么简单!当前的假设(因为我在内存中存储多个数据帧)是,总的来说,我正在最大限度地利用可用内存的数量,这会导致问题。我想我需要将数据帧作为 csvs 写入磁盘,然后直接调用 csvs。
-
不确定,但这会不会:
options(shiny.maxRequestSize=30*1024^2)帮助? -
感谢@parth,不幸的是,我已经在使用 options(shiny.maxRequestSize = 800 * 1024 ^ 2)。
-
有解决办法吗,我的应用也有同样的问题。