美文网首页R数据读取 清理BG-R
快速读取大文件 - vroom

快速读取大文件 - vroom

作者: Steven潘 | 来源:发表于2020-03-18 22:02 被阅读0次

    有时我们需要将一个大文件读入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

        本文链接:https://www.haomeiwen.com/subject/lelhyhtx.html