在我们用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")
网友评论