快速读取大文件 - vroom

有时我们需要将一个大文件读入R,比如单细胞表达矩阵。使用vroom这个R包可以节约不少时间。

官方文档:Get started with vroom

读取文档

简单读取文档

library(vloom)
file=vroom_example("xxx.csv") #获取绝对路径
f=vroom(file,delim=",") #读取文档

读取多个文档

对于有相同列数的文件,可以一次性读入并合并为一个文件。id参数:最后加上一行,为文件的路径。

files <- fs::dir_ls(glob = "mtcars*csv")
f=vroom(files, id = "path", col_names=T)

读取压缩文件

file <- vroom_example("mtcars.csv.gz")
f=vroom(file)

远程读取文件

file <- "https://raw.githubusercontent.com/r-lib/vroom/master/inst/extdata/mtcars.csv"
f=vroom(file)

远程可以读取文档和.gz格式的压缩文件。

读取固定宽度文档

略,见文档。

数据操作

数据选择

file <- vroom_example("mtcars.csv.gz")
f=vroom(file, col_select = c(model, cyl, gear)) #按列名选择
f=vroom(file, col_select = c(1, 3, 11)) #按列序号选择
f=vroom(file, col_select = starts_with("d")) #按收尾字母匹配
f=vroom(file, col_select = list(car = model, everything())) #修改列名

规定列格式

vroom(vroom_example("mtcars.csv"), col_types = c(.default = "c")) #所有列以字符格式读入
vroom(vroom_example("mtcars.csv"), col_types = c(hp = "i", cyl = "_", gear = "f")) 
# i表示整数,_表示skip,f表示小数

输出文档

vroom_write(mtcars, "mtcars.csv", delim = ",")
vroom_write(mtcars, "mtcars.tsv.gz")
vroom_write(mtcars, "mtcars.tsv.bz2")
vroom_write(mtcars, "mtcars.tsv.xz")
vroom_write(mtcars, pipe("pigz > mtcars.tsv.gz"))

命令行交互

cat inst/extdata/mtcars.csv | Rscript -e 'vroom::vroom(stdin())'
Rscript -e 'vroom::vroom_write(iris, stdout())' | head
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容