r - data.table fread() 中是否有更快的方法将大 gz 文件读入内存?
问题描述
我正在尝试读回一个CID-Title.gz
从我的计算机磁盘命名的大 gz 文件(大约 1.5 Gb,有两列:第一列是数字,第二列是字符)(最初,我从这里下载了这个文件
我使用data.table::fread()
如下:
dat <- data.table::fread(file = "CID-Title.gz", showProgress = TRUE, nThread = 16)
fread
阅读此 gz 文件时如何加快速度?还是有其他技巧可以更快地读取大 gz 文件?
解决方案
您可以尝试该软件包(此处vroom
为网页,此处为 CRAN 页面)。它读取到一个 tidyverse tibble:我不知道将 tibble 转换为 data.table 对象是否会降低下游性能。
vroom 不会停止实际读取所有数据,它只是索引每条记录所在的位置,以便以后读取。返回的向量使用 Altrep 框架在访问数据时按需延迟加载数据,因此您只需为使用的数据付费。这种惰性访问是自动完成的,因此无需更改您的 R 数据操作代码。
vroom 还使用多个线程进行索引、物化非字符列,以及在写入时进一步提高性能。
vroom 支持自动读取 zip、gz、bz2 和 xz 压缩文件,只需将压缩文件的文件名传递给 vroom。
推荐阅读
- html - 如何防止 div 在缩放时重新调整大小?
- excel - 如何使用递归代码提高性能
- xamarin - 如何在 Android 自定义渲染器中设置字体样式
- macos - 库版本不兼容 - cdo 版本需要 11.0.0 或更高版本,但 libcurl.4.dylib 提供 7.0.0 版本
- r - 如何在ggplot中将字符用作多线图的x轴?
- php - 保持按钮禁用,直到当前页面重新加载(使用 Jquery)
- django - How to save header request using REST framework
- javascript - 当我尝试在 JSP 中加载 JSON 文件时出错
- python - Flask login_required 访问静态文件夹中的子目录
- javascript - 如何:延迟订阅弹出窗口 - jQuery