在我们用R语言分析数据的过程中,有时候跑代码会遇到需要来回读取多个文件的情况,麻烦又费时;或者有时候想要从有着大量数据的Excel表格中筛选出自己需要的一些数据分别做表格或者分别读入R.本小辣鸡新手最近在分析数据的时候,受到师兄的启迪,通过膜拜百度和简书上各位大佬的文章,针对此类情况做了一个简单的小总结小汇总,里边有本人从新手的角度傻瓜式的注释和一些小小的改动。尴尬的是由于看的太多太乱,我也忘记了都是借鉴那些大佬的文章了,,,,第一次发文,本着共享共乐的精神。侵权必删,不喜勿喷,有错必改,理解万岁。
#读取路径F:/mRNA/fpkm/文件夹下面每一个文件的名字,存储于file_names这个变量中;
#此时设置的环境变量应与此路径相同
file_names<- list.files("F:/mRNA/fpkm/")
name = c("fiber","leaf","ovule")
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中。
}
save(fiber,leaf,ovule, file = "mRNA.fpkm.Rdata")
load("mRNA.fpkm.Rdata")
#加载dplyr包
library(dplyr)
miRNA.all<-read.table("Readcount_TPM.xls",
header = T,
sep = "\t")
```
number = c(1,2,3)
#选择筛选标记
sign = c("F","L","O")
#按照需要给分出来的数据框命名
name = c("fiber","leaf","ovule")
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 对象上。(取自百度文库)
save(fiber.mi, ovule.mi, leaf.mi, file = "miRNA.tpm.Rdata")
load("miRNA.tpm.Rdata")