2015-08-17 76 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() 
} 
相關問題