有时我们需要将一个大文件读入R,比如单细胞表达矩阵。使用vroom这个R包可以节约不少时间。
读取文档
简单读取文档
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