快速读取大文件 - 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

你可能感兴趣的:(快速读取大文件 - vroom)