2013-10-10 65 views
1

我想用動態文件名編寫jpeg文件。 在plot_filename中,我使用來自其他變量的值連接字符串,以創建動態文件名稱 。jpeg()函數與R中的paste()函數不兼容?

plot_filename = paste("Series T_all","/",Participant[i],"/",Part[i,2],"/",Part[i,3],".jpg") 

plot_filename的輸出是另一個字符串:"Series T_all/802/1/64 .jpg"

然而,當我想在jpeg()功能

jpeg(filename= plot_filename, width = 2000, height = 1500, quality = 100, 
    pointsize = 50) 
plot(T1) 
dev.off() 

我收到以下錯誤使用此字符串作爲文件名:

Error in jpeg(filename = paste("Series T_all", "/", Participant[i], "/", : 
    unable to start jpeg() device 
In addition: Warning messages: 
1: In jpeg(filename = paste("Series T_all", "/", Participant[i], "/", : 
    unable to open file 'Series T_all/802/1/64 .jpg' for writing 
2: In jpeg(filename = paste("Series T_all", "/", Participant[i], "/", : 
    opening device failed 

但是當我只是使用plai n字符串(不帶粘貼功能)作爲文件名

name="plot_filename.jpg" 

jpeg()函數工作得很好。

有人知道這可能嗎?在我看來,在這兩種情況下,你只是輸入字符串到jpeg()函數,所以我不明白爲什麼一個,但不是其他的工作。

感謝

+1

這些功能當然是兼容的。您是否確實有一個名爲「Series T_all」的文件夾,並且在該文件夾中有另一個文件夾與參與者號碼和空格等。將「/」更改爲「_」之類的內容。 – shadow

+1

那麼,你指定的子目錄存在嗎?你也很可能想使用'paste0'而不是'paste'或'paste(...,sep =「/」)'。 – Roland

+0

正如羅蘭所說,你的連接顯然會在字符串中加入大量空白,所以路徑無效。 –

回答

2

聲明

plot_filename = paste("Series T_all","/",Participant[i],"/",Part[i,2],"/",Part[i,3],".jpg") 

用空格(默認)個體線分開,你可以在你的輸出例如

"Series T_all/802/1/64 .jpg" 

此路徑看,但是,不存在。 如果使用

plot_filename = paste("Series T_all","/",Participant[i],"/",Part[i,2],"/",Part[i,3],".jpg", sep="") 

這應該給像

"Series T_all/802/1/64.jpg" 

一般情況下,九月字符串=可以採取任何字符或字符串。所以你也可以使用sep =「/」來分隔你的字符串,所以當你連接你的字符串時,你不必寫「/」。但是,這會影響Part [i,3]和「.jpg」的連接。如果您想以這種方式使用它,可以在第二步中使用sep =「」附加「.jpeg」。對於你的情況,我認爲可以使用sep =「」。

+0

嘿,清除路徑名稱中的空白確實有竅門。我愚蠢的錯誤...正如你可能已經猜到的那樣,我是R編程新手:p非常感謝 – Bart