R工作生活生信大杂烩

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

2019-07-04  本文已影响43人  想成为你_50a2

      在我们用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")

上一篇 下一篇

猜你喜欢

热点阅读