2

我想用动态文件名编写 jpeg 文件。在plot_filename我将字符串与其他变量的值连接起来以创建动态文件名。

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

但是当我只使用纯字符串(没有粘贴功能)作为文件名时

name="plot_filename.jpg"

jpeg()功能工作得很好。

有谁知道这怎么可能?在我看来,在这两种情况下,您只是将字符串输入到jpeg()函数中,所以我不明白为什么其中一种会起作用,而另一种则不起作用。

谢谢

4

1 回答 1

3

该声明

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= 可以采用任何字符或字符串。因此,您还可以使用 sep="/" 来分隔字符串,这样在连接字符串时就不必写“/”。但是,这会影响 Part[i,3] 和“.jpg”的连接。如果您想以这种方式使用它,您可以在第二步中使用 sep="" 附加“.jpeg”。对于您的情况,我认为只使用 sep="" 就可以了。

于 2013-10-10T15:16:58.490 回答