美文网首页R工作生活生信大杂烩
R语言同时读取多个文件+表格数据拆分小技巧 新手死亡笔记

R语言同时读取多个文件+表格数据拆分小技巧 新手死亡笔记

作者: 想成为你_50a2 | 来源:发表于2019-07-04 19:00 被阅读43次

          在我们用R语言分析数据的过程中,有时候跑代码会遇到需要来回读取多个文件的情况,麻烦又费时;或者有时候想要从有着大量数据的Excel表格中筛选出自己需要的一些数据分别做表格或者分别读入R.本小辣鸡新手GT最近在分析数据的时候,受到师兄的启迪,通过膜拜百度和简书上各位大佬的文章,针对此类情况做了一个简单的小总结小汇总,里边有本人从新手的角度傻瓜式的注释和一些小小的改动。尴尬的是由于看的太多太乱,我也忘记了都是借鉴那些大佬的文章了,,,,第一次发文,本着共享共乐的精神,本人郑重承诺侵权必删,不喜勿喷,有错必改,理解万岁。

    废话少说,接招:

    NO.1

    ########################################

    #将文件夹中的多个文件制作成一个Rdata文件,方便导入

    #######################################

    ​## import file

    #读取路径F:/mRNA/fpkm/文件夹下面每一个文件的名字,存储于file_names这个变量中;

    ​#此时设置的环境变量应与此路径相同

    file_names<- list.files("F:/mRNA/fpkm/")

    #给文件夹里的每一个文件依次命名自己想要的名字

    ​name = c("fiber","leaf","ovule")

    #for循环开始

    ​for(i in 1:length(file_names)){

    names <- paste(name[i],"",sep = "")

    #每一个循环操作,用paste函数直接命名想要的文件名,

    #如想在name加相同后缀(如“.fpkm"),则在""中加入想要加的后缀

    #不需要则不用管。

    ##########################或者利用下边的gsub函数,不过个人认为较麻烦

    #name<-gsub(".csv", "",file_names[i])

    #每一个循环中操作:用gsub截取每个文件的文件名“.txt”之前的字符,然后

    #赋值给变量name,gsub将文件名的后缀“.txt”替换为空之后,即去掉每一个

    #文件名的后缀“.txt”。

    assign(names,read.table(file_names[1],sep=',',header=TRUE))

    #用read.table命令读取当前目录下的每一个文件的内容,并将文件内容

    #以数据框的格式存贮在变量name中。

    }

    #将制作好的数据框格式文件根据需要保存在一个Rdata文件

    save(fiber,leaf,ovule, file = "mRNA.fpkm.Rdata")

    #下一次使用时直接导入文件即可

    load("mRNA.fpkm.Rdata")

    NO.2

    ########################################################

    #将一个文件或者表格,按照需要分成多个数据框格式子文件

    #######################################################

    ​#加载dplyr包​

    library(dplyr)

    ## 读入需要操作的文件,命名(如miRNA.all)

    ​miRNA.all<-read.table("Readcount_TPM.xls",

    header = T,

    sep = "\t")

    #为for循环中“i"赋值

    number = c(1,2,3)

    #选择筛选标记

    sign = c("F","L","O")

    #按照需要给分出来的数据框命名

    name = c("fiber","leaf","ovule")

    # for循环

    for (i in number) {

    #分出数据框名字组装

    names <- paste(name[i],".mi",sep = "")

    #筛选标记组装

    pattern <- paste("_",sign[i],".tpm",sep = "")

    #将包含通过pattern组成的标记列和第一列行名,按照设置好的names进行铠甲合体

    assign(names, data.frame(miRNA = miRNA.all$sRNA.readcount,

    dplyr::select(miRNA.all, contains(pattern))))

    }

    #assign函数

    #C++ string类的成员函数,用于拷贝、赋值操作,

    #它们允许我们顺次地把一个string 对象的部分内容拷贝到另一个string 对象上。(取自百度文库)

    #将命名成功的数据框保存到一个Rdata

    save(fiber.mi, ovule.mi, leaf.mi, file = "miRNA.tpm.Rdata")

    #下一次使用时直接导入即可

    load("miRNA.tpm.Rdata")

    相关文章

      网友评论

        本文标题:R语言同时读取多个文件+表格数据拆分小技巧 新手死亡笔记

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