我正在尝试用循环保存大量的图。
第一步是通过一个运行良好的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:
当我在文件名之前添加一个数字时,它正在工作,这对我的任务来说是可以接受的。它似乎是一个覆盖问题,虽然我的数据集没有得到任何双打。这不是我的问题的正确解决方案,但可以帮助人们遇到与我相同的问题。
答案 0 :(得分:0)
我怀疑SITE2和SP2的组合并不是唯一的。这意味着您绘制了所有绘图,但有些绘图保存在现有的pdf文件中并删除上一个绘图。
如果length(unique( paste0(SUBTOT_DATE$SITE2,"_",SUBTOT_DATE$SP2) ))
= 115,那就是你的问题。