【发布时间】:2015-11-16 13:46:31
【问题描述】:
我需要从互联网上下载一个压缩的 csv 文件,解压缩并作为 data.frame 加载到内存中。有没有一种方法可以只在内存中完成整个过程而无需读/写磁盘?这是我尝试过的:
library(RCurl)
file <- getURL(url, userpwd='user:pwd')
tf <- tempfile()
writeBin(content(file, "raw"), tf)
tf <- unzip(tf, exdir=tempdir())
data <- read.csv(tf)
unlink(tf)
我认为writeBin、unzip 和read.csv 这里使用昂贵的磁盘 I/O,但我不知道如何改进。
【问题讨论】:
-
我会很惊讶写入和解压缩文件的延迟比初始下载慢?但你可以试试
unz()函数。 -
@ForrestR.Stevens,你能解释一下你是如何使用
unz函数来完成这个任务的吗?这对我来说不是微不足道的。 -
为此使用 vroom。 vroom.r-lib.org/index.html