2015-08-17 77 views
2

我试图通过循环绘制图。在循环中绘制R图,并将其保存为jpeg

输入数据:表,它们具有相同的结局* depth.txt,也有在表2米制表符分隔栏:

Baba"\t"58.38 

Tata"\t"68.38 

Mama"\t"30.80 

jaja"\t"88.65 

OUTPUT:我想获得一个JPEG文件与plot()每个* depth.txt(它们的名称将与表名相同)用于所有文件(轴x将是表中的第一列,轴y将是第二列)

我创建了脚本的一部分,但它不起作用:

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 

它不起作用,你能帮我吗?我是R的初学者。

+1

尝试在'{...}'中包含循环体。 –

+0

我试了一下,这是个好主意,但仍然只有一个.jpeg,有两个图表(第一个是好的,但第二个是错误的值),而且jpeg的名称也是错误的:-( – Vonton

+0

奇怪 - 前段时间我也试过类似的东西,也没用,期待解决方案,那时候我只用了'par(mfrow = c(3,4))'(如果以前循环,将在一个页面上绘制所有图形,水平3个,垂直4个),然后将整个绘图保存到最后... – maj

回答

1

请问下面做你想做的?

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() 
} 
+0

是的,它可以工作,但它会重写我的.txt文件,但这是我的错,的输出。是否有可能创建图形而不覆盖?谢谢你的工作脚本。我看到我很接近,但是我怎么说我是R的初学者:-(非常感谢你.. – Vonton

+0

亲爱的Lars,谢谢你这是一个很好的帮助,它只是缺少一个),但它并不是错误的。非常感谢 – Vonton

1

前两个,但更改文件名的地块

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() 
} 
+0

它也很棒,谢谢 – Vonton

0

renameing文件相似?

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() 
} 
相关问题