Plot graphs in R by loop and save it like jpeg

2020-07-13 11:16发布

I am trying to plot graphs by loop.

Input data: Tables, which have the same ending *depth.txt, there are 2 tab delimited columns in the table:

Baba"\t"58.38

Tata"\t"68.38

Mama"\t"30.80

jaja"\t"88.65

OUTPUT: I would like to get a jpeg file with plot() for each *depth.txt (their names will be the same as the tables' names) for all files (axis x will be the first column from the table and axis y will be second column)

I created a part of the script, but it doesn't work:

files <- list.files(path="/home/fil/Desktop/", pattern="*depth.txt", full.names=T,recursive=FALSE)

for (i in 1:length(files))
plot(read.table(files[i],header=F,sep="\t")$V1,read.table(files[i],header=F,sep="\t")$V2)
dev.copy(jpeg,filename=files[i])
dev.off

It doesn't work, could you help me please? I am a beginner with R.

标签: r for-loop plot
3条回答
SAY GOODBYE
2楼-- · 2020-07-13 11:52

renameing the file?

for (i in 1:length(files)) {
    file = files[i]
    file = paste("jpg",file,sep="_")
    jpeg(file)
    plot(read.table(files[i],header=F,sep="\t")$V1,read.table(files[i],header=F,sep="\t")$V2)
   dev.off()
}
查看更多
淡お忘
3楼-- · 2020-07-13 12:01

Will the following do what you want?

for (i in 1:length(files)) {
  dat <- read.table(files[i], header = FALSE, sep = '\t')
  jpeg(file = paste(files[i], '.jpeg', sep = ''))
  plot(dat$V1, dat$V2)
  dev.off()
}
查看更多
Evening l夕情丶
4楼-- · 2020-07-13 12:06

Similar to the first two but changing the file name for the plots

files <- paste("fil",1:3,"depth.txt",sep="")      #  example file names
for( i in 1:length(files))  {
     filename <-  sub(".txt",".jpg",files[i])
     jpeg(file=filename)
     plot(1:(10*i))                             # example plots
     dev.off()
}
查看更多
登录 后发表回答