按名称保存多个绘图的问题

时间:2014-06-06 10:42:21

标签: r

我正在尝试用循环保存大量的图。

第一步是通过一个运行良好的dlply函数创建绘图。它导致大量图形存储在“p”中。 对于这个例子,p的长度为715,所以循环应该打印并保存我想要的png格式的715个图。 除了它只保存了115个!

在下面的代码中,我通过粘贴字符串(SITE + SP)来重命名我想要的文件。

for( i in 1:length(p)){
filename<-paste(SUBTOT_DATE$SITE2[i],"_",SUBTOT_DATE$SP2[i], ".png", sep="")
png(file=filename)
print(p[i])
dev.off()}

工作正常(所有图都打印出来,因为控制台全部显示)但它只保存115个图。我发现如果我用一个数字重命名绘图文件(如下面的代码所示,例如Plot IA_1),它会打印出大量的图。

for( i in 1:length(p)){
filename<-paste("plot IA","_",i, ".png", sep="")
png(file=filename)
print(p[i])
dev.off()}

所以问题来自文件的名称,但我没有得到限制节省的数量,因为我可以找到每个“SITE2”图中的至少一个,并且之间没有很大的区别“SP2”字符串(我的意思是没有特殊的字符或长度差异,只是字母字符)。以下是一些SP2:

[1] Aglais io                                        
[2] Aglais urticae                                   
[3] Anthocharis cardamines                           
[4] Apatura ilia                                     
[5] Aphantopus hyperantus                            
[6] Aporia crataegi                                  
[7] Araschnia levana                                 
[8] Argynnis adippe                                  
[9] Argynnis aglaja                                  
[10] Argynnis paphia                                  
[11] Aricia agestis                                   
[12] Boloria dia ---------It stops here                                  
[13] Boloria euphrosyne                               
[14] Brenthis daphne                                  
[15] Brintesia circe                                  
[16] Callophrys rubi                                  
[17] Carterocephalus palaemon 

是否有一种我不知道的限制?有关信息,SITE2和SP2都是因素。

感谢您的帮助!

编辑: 我做了更多测试,如果我只使用我想要的两个名字中的一个,它似乎工作正常。出于某种原因,当我同时使用SUBTOT_DATE $ SITE2 [i]和SUBTOT_DATE $ SP2 [i]时,它不再起作用了。 名称未达到Windows(260)中文件名接受的字符数限制。

EDIT2:

当我在文件名之前添加一个数字时,它正在工作,这对我的任务来说是可以接受的。它似乎是一个覆盖问题,虽然我的数据集没有得到任何双打。这不是我的问题的正确解决方案,但可以帮助人们遇到与我相同的问题。

1 个答案:

答案 0 :(得分:0)

我怀疑SITE2和SP2的组合并不是唯一的。这意味着您绘制了所有绘图,但有些绘图保存在现有的pdf文件中并删除上一个绘图。

如果length(unique( paste0(SUBTOT_DATE$SITE2,"_",SUBTOT_DATE$SP2) )) = 115,那就是你的问题。