Например, у нас есть два файла,
df = data.frame(x=1,y=2,sapply(1:8,function(i)rnorm(100,i,1)))
colnames(df)[3:10] = paste0("column_",letters[1:8])
write.table(df,"fileA.txt",row.names=FALSE,quote=FALSE,sep="\t")
df = data.frame(x=1,y=2,sapply(1:8,function(i)rnorm(100,i,1)))
colnames(df)[3:10] = paste0("column_",LETTERS[1:8])
write.table(df,"fileB.txt",row.names=FALSE,quote=FALSE,sep="\t")
Теперь мы напишем функцию, которая может прочитать файл, взять определенные столбцы и создать комбинированный график:
library(tidyr)
library(tibble)
library(ggplot2)
plotfun = function(datafile,colvars){
data = read.delim(datafile,stringsAsFactors=FALSE)
plotdf = pivot_longer(data[,colvars],everything())
p = ggplot(plotdf,aes(x=value))+
geom_histogram(color="black", fill="white") + facet_wrap(~name)
return(p)
}
Мы тестируем его в одном файле с несколькими столбцами:
plotfun("fileA.txt",c("column_a","column_b","column_e"))
Теперь нам нужно определить список, который говорит, что это за файлы, что это столбец для построения и как его сохранить:
LIST = list(
A = list(file="fileA.txt",
colvars = c("column_a","column_b","column_c","column_d","column_e","column_f"),
pdf = "A.png"),
B = list(file="fileA.txt",colvars = c("column_a","column_c","column_d"),pdf="B.png")
)
Теперь мы перебираем этот список:
for(i in 1:length(LIST)){
p = plotfun(LIST[[i]]$file,LIST[[i]]$colvars)
ggsave(p,file=LIST[[i]]$pdf)
}