我有一个应用程序,我想根据用户输入从查找表中提取值。参考表是一项统计测试,基于对用户输入的所有不同组合都执行得太慢的计算。因此,查找所有可能性的表。

但是...现在,该表大约为60 MB(如.Rdata)或214 MB(如.csv),如果我扩展可能的用户输入,它将变得更大。我已经将数据中的有效数字数量减少到了3个,并删除了行/列名称。

显然,我可以在响应服务器功能之外预加载查找表,但是仍然需要花费相当长的时间才能加载该数据。有人在处理Shiny中的大量数据时有任何提示吗?谢谢!

最佳答案

flaneuse,我们仍在使用您的较小集合,但我们一直在尝试:


使用rds作为我们的数据

就像@jazzurro在上面提到的rds一样,您似乎知道如何执行此操作,但是其他语法如下。

格式.rds允许您引入单个R对象,因此可以根据需要重命名。

在您的准备数据代码中,例如:

mystorefile <- file.path("/my/path","data.rds")
# ... do data stuff

# Save down (assuming mydata holds your data frame or table)
saveRDS(mydata, file = mystorefile)


在您的闪亮代码中:

#  Load in my data
x <- readRDS(mystorefile)


部署时,请记住将数据.rds文件复制到应用程序目录中。我们使用数据目录/ myapp / data,然后在我们的闪亮代码中将存储文件的file.path更改为“ ./data”。
全球

我们已经放置了readRDS调用以将数据加载到此全局文件中(而不是在shinyServer()调用之前的server.R中),因此该命令可以运行一次,并且可用于所有会话,并且可以添加额外的奖励被ui.R看到。

有关R Shiny的信息,请参见scoping explanation
预先切片和切块

标准每日报告使用最新数据。因此,我在global.R中对数据的较小子集做了一个小的latest.dt。因此,具有最新图表的着陆页可使用此较小的数据集来获得更快的图表。

然后,使用full.dt的自定义数据选项卡位于单独的选项卡上。它比较慢,但是在那个阶段用户更加耐心,并且正在考虑选择什么日期和其他参数。

这个子集的想法可能会为您提供帮助。


会对其他人感兴趣(尝试了更多苛刻的数据集)!

10-04 23:20
查看更多