超级增强子

批量读入/读出数据

2020-03-06  本文已影响0人  超级无敌大蜗牛

批量读入数据

path="/home/zzz/data/data/Bcell_vitro/HM_AS/data05_corr/A3SS"
file_names <- list.files(pattern = ".txt") ## 将路径下.txt文件名储存到file_names这个变量中
for (i in 1:length(file_names)) { # length(file_names)指的是该向量的长度,可以理解为从第一个到最后一个
  name<-gsub(".txt","",file_names[i]) #file_names是一个向量用[]来索引,那么file_names[1]表示上面赋值后第一个.txt文件名,当i = 1时, 就变成gsub(".txt,"",H3K27ac.txt), 那么就是将.txt前面的文件名截取出来赋值给name。
  assign(name,read.table(file_names[i],header = T)) ##assign函数用来给变量赋值,如果需要直接将读进来的数据拿来作图,需要用到get函数,具体见下面。
}
assign函数在循环时候,给变量赋值,算是比较方便

1、给变量赋值

for (i in 1:(length(rowSeq)-1)){
  assign(paste("nginx_server_fields7_", i, sep = ""), nginx_server_fields7[(rowSeq[(i-1)+1]):(rowSeq[i+1]), ])
}

2、通过for循环给变量a1、a2、a3赋值

for (i in 1:3){
    assign(paste("a", i, sep = ""), i:10)
}
[1] "a1" "a2" "a3" "i"
> a1
 [1]  1  2  3  4  5  6  7  8  9 10
> a2
[1]  2  3  4  5  6  7  8  9 10

3、get和assign联合用法

for(i in 1:3){
     assign(paste("p", i, sep=""), i)
     tmp <- get(paste("p", i, sep=""))
     print(tmp)
 }
[1] 1
[1] 2
[1] 3
 ls()
[1] "i"   "p1"  "p2"  "p3"  "tmp"

参考:R 语言assign 和get 函数用法

批量读取list

path <- "F:/Rfile/OD-B/Data" ##文件目录
fileNames <- dir(path)  ##获取该路径下的文件名
filePath <- sapply(fileNames, function(x){ 
                 paste(path,x,sep='/')})   ##生成读取文件路径
data <- lapply(filePath, function(x){
             read.csv(x, header=T)})  ##读取数据,结果为list

从数据库中读取数据类似上面,获取要数据库里的文件名,写个正则筛选文件名后for循环读取。

批量输出

对结果批量输出csv文件,其中data为list格式
outPath <- "F:/Rfile/OD-B/Consequence" ##输出路径
out_fileName <- sapply(names(data),function(x){
                    paste(x, ".csv", sep='')}) ##csv格式
out_filePath  <- sapply(out_fileName, function(x){
                     paste(outPath ,x,sep='/')}) ##输出路径名
##输出文件
for(i in 1:length(data)){
  write.csv(data[[i]], file=out_filePath[i], row.name=F) 
}

批量导入数据并进行作图

options(stringsAsFactors = F)
#批量导入数据
setwd("/Users/zzzhang/Desktop/data05_corr/A3SS")
file_names <- list.files(pattern = ".txt")
pdf("corr.pdf")
for (i in 1:length(file_names)) { 
  name<-gsub(".txt","",file_names[i])
  assign(name,read.table(file_names[i],header = T))
  data <- get(name)
 p <- ggscatter(data, x = "HM", y = "PSI",add = "reg.line", conf.int = T, add.params = list(color = "blue",fill = "lightgray")) + stat_cor(method = "pearson") 
  print(p)
}
dev.off()
#画的图会被全部保存在一个pdf文件里面,方便查看,如果想要把每一个图单独保存,则需要如下命令:
setwd("/Users/zzzhang/Desktop/data05_corr/A3SS")
file_names <- list.files(pattern = ".txt")
for (i in 1:length(file_names)) { 
  name<-gsub(".txt","",file_names[i])
  assign(name,read.table(file_names[i],header = T))
  data <- get(name)
  p <- ggscatter(data, x = "HM", y = "PSI",add = "reg.line", conf.int = T, add.params = list(color = "blue",fill = "lightgray")) + stat_cor(method = "pearson") 
  ggsave(p,file=paste(name,".pdf",sep=""))
}

参考:探路小猪猪, 写的很详细,很有用。

上一篇 下一篇

猜你喜欢

热点阅读