美文网首页R数据读取 清理生物信息 学习R语言
R语言中选取多个文件夹中的文件合并到新的文件夹

R语言中选取多个文件夹中的文件合并到新的文件夹

作者: 9d760c7ce737 | 来源:发表于2017-11-23 16:49 被阅读137次

    之前的帖子解决了在R语言中将多个同样的行列式文件合并起来的问题
    今天在处理TCGA数据时发现,数据下载后是放在单独的文件夹中的,几百个文件夹里面都有一个我们需要的文件,
    需要把他们转移到新的文件中去,我看到perl语言的处理方式,应该R语言也可以完成
    我这么做的原因就是,
    在使用R语言处理数据时有个观点,我从两个人那边听到的,但是我现在还不能凝练:

    • jimmy说,不要把数据导出为excel,然后下次又呆呆地导入,直接储存为"*.Rda",要用的时候load即可,不需要来回读写
    • Y叔说,只要你还没有把图导出来打印,数据就是图,图就是数据,一切转换都有可能

    对我而言,最直接的原因就是,在R语言中处理数据,突然间中断使用其他语言的脚本来处理某个过程,这个状态很诡异,再怎么说R语言也是语言,
    和其他语言比对perl比,处理数据顶多只是复杂和简单的关系,不应该是不能完成才对!

    建立测试数据,创建10个文件夹,同时在每个文件夹中创立10个新的文件

    经过试验我发现,dir不能批量生成,需要使用for循环,但是file可以批量

    for (i in 1:10) {
      dir.create(paste0("tmp_",i)) #创建10个文件夹
      file.create(paste0("tmp_",i,"/counts",i,".htq",seq(1:10))) #同时在每个文件夹中创立10个新的文件
    }
    

    查看数据,忽略TCGAbiolinks

    dir()
    [1] "111.R" "112.R" "TCGAbiolinks.Rproj"
    [4] "TCGAbiolinks_2.5.7.zip" "tmp_1" "tmp_10"
    [7] "tmp_2" "tmp_3" "tmp_4"
    [10] "tmp_5" "tmp_6" "tmp_7"
    [13] "tmp_8"

    查看tmp_1文件夹中的内容

    dir("tmp_1")
    [1] "counts1.htq1" "counts1.htq10" "counts1.htq2" "counts1.htq3"
    [5] "counts1.htq4" "counts1.htq5" "counts1.htq6" "counts1.htq7"
    [9] "counts1.htq8" "counts1.htq9"

    任务:取每个文件夹中的第二个文件,就是名称以htq2结尾的文件

    并且把他们放到一个新的文件夹中去

    dir.create("tmp_all") #创建新的文件夹
    for (dirname in dir()[5:14]){  
      file <- list.files(dirname,pattern = "*.htq2") #找到对应文件夹中的内容,pattern可以是正则表达式
      file.copy(paste0(dirname,"/",file),"tmp_all") #复制内容到新的文件夹
    }
    

    其中dir()[5:14] 只是因为我自己的文件夹下有很多别的东西,这里是选取我想要的文件夹

    dir()[5:14]
    [1] "tmp_1" "tmp_10" "tmp_2" "tmp_3" "tmp_4" "tmp_5" "tmp_6" "tmp_7"
    [9] "tmp_8" "tmp_9"

    我们看一下tmp_all是否已经有了文件

    dir("tmp_all")
    [1] "counts1.htq2" "counts10.htq2" "counts2.htq2" "counts3.htq2"
    [5] "counts4.htq2" "counts5.htq2" "counts6.htq2" "counts7.htq2"
    [9] "counts8.htq2" "counts9.htq2"

    最终我发现,R语言处理起来也很简单!
    有了一个隐蔽的博客真是好,随心所欲地记录。

    相关文章

      网友评论

        本文标题:R语言中选取多个文件夹中的文件合并到新的文件夹

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