2013-01-21 31 views
1

我有5個標籤文件,稱爲「1.txt」,「2.txt」,...,「5.txt」。每個文件都包含一個名爲「x」的列和另一個名爲「y」的列。For循環批量繪製R中的多個文件

我想申請一個循環來生成每個單獨的文件情節和情節重定向到相應分別稱爲「次數1.pdf」輸出PDF文件,「2.pdf」 ......「5.pdf」 。

這裏是我試過,但我與PDF部分我想一個問題:

files<-list.files(pattern=".txt") 
for (input in files){ 
    output<-basename(file.path(input,fsep=".txt"))  # input files are in working directory 
    graph<-read.table(input,header=T) 
    pdf('output.pdf') 
    plot(graph$x,graph$y) 
    dev.off() 
} 

它只能產生所謂的「輸出.pdf」第一標繪。

如何在pdf函數中提到變量「output」?

感謝您的幫助!

+1

使用'?paste' .... – joran

+0

我不知道你是否建議貼,因爲我的文件被命名爲「1」,「2」,「3」,「4」 ,「5」。我提到這些名字作爲例子。我的意思是命名與各個輸入文件具有相同前綴的輸出文件。 – lqdo2000

+0

我的建議與您的特定文件的特定名稱無關。它恰好是人們用來解決這個問題的工具。 – joran

回答

3

什麼喬蘭在增加教學術語是說,你目前的功能覆蓋你的5次。我希望你能抓住你自己的魚。你必須通過東西到pdf()做出五個獨特的文件。像這樣的東西可能會幫助,

files <- list.files(pattern=".txt") 
for (input in files){ 
    output <- basename(file.path(input,fsep=".txt")) 
    graph <- read.table(input,header=T) 
    pdf(paste0("output for ", input,".pdf")) 
    plot(graph$x,graph$y) 
    dev.off() 
} 
+0

幾乎在那裏。我嘗試了很多組合。最好的是,當我用'pdf(paste0(output,「。pdf」)替換''它會生成文件,但「.txt」擴展名仍然存在(「1.txt.pdf」)。我試圖修改'file.path'函數,但沒有任何變化。它還返回'read.table(Input,header = T)中的錯誤:多於列名稱的列。也嘗試用'paste'代替'paste0',但結果相同。圖表是正確的! – lqdo2000

+0

爲了擺脫'.txt'的使用:'output_notxt = sub(「.txt」,「」,output)',它實質上用空字符串替換'.txt'。 –

+0

好的!但爲什麼'basename'不起作用呢? – lqdo2000