R有光泽的加速数据加载

问题描述 投票:1回答:2

我有一个Shiny应用,需要先加载.RData文件。 .RData文件只有一个大文件,该文件具有28百万行的25个变量。由于文件很大,因此需要超过2分钟才能显示“有光泽”页面。我们可接受的加载时间在30秒以内。有没有人对如何加快加载有任何建议?

我确实尝试通过fread函数加载数据(来自data.table pkg),但加载仍需2分钟以上。我想load(.RData)仍然比fread(.csv)更快?

谢谢!

r shiny shinydashboard
2个回答
2
投票

不要使用压缩-如果您有快速的磁盘并且变量是数字,那么使用未压缩的RDS比压缩要快得多:

> l = lapply(1:25, function(o) rnorm(28e6))
> names(l) = paste0("V",1:25)
> attr(l,"row.names") = .set_row_names(length(l[[1]]))
> class(l) = "data.frame"
> saveRDS(l, file="data.rds", compress=FALSE)

(新会话)

> system.time(d<-readRDS("data.rds"))
   user  system elapsed 
  6.474   2.091   8.576 
> dim(d)
[1] 28000000       25

就是说,这似乎是Rserve的一个好用例,您可以在其中预加载数据,因此当用户连接数据时,所有会话都已经加载并共享了数据(假设您没有运行Windows服务器)。


0
投票

[使用data.table包中的fread函数读取csv比readRDS快得多

© www.soinside.com 2019 - 2024. All rights reserved.