Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在循环中命名jpg文件_R_Loops_Naming - Fatal编程技术网

R 在循环中命名jpg文件

R 在循环中命名jpg文件,r,loops,naming,R,Loops,Naming,我正在做一个循环操作,从两个数据帧(obs和sim)的同一列读取数据,并生成散点图。每个数据帧中总共有24列。下面的脚本工作正常 for(i in 1:24) { plot (obs[,i],sim[,i],xlab="obs",ylab="sim",main=substitute(paste('Lead Time (hrs) = ', a), list(a=i))) } 但是我想将每个绘图保存在一个文件夹(C:/RPlots/)中,并且我还想在循环中包含此操作 我使用了下面的脚本,但它不

我正在做一个循环操作,从两个数据帧(obs和sim)的同一列读取数据,并生成散点图。每个数据帧中总共有24列。下面的脚本工作正常

for(i in 1:24) {
  plot (obs[,i],sim[,i],xlab="obs",ylab="sim",main=substitute(paste('Lead Time (hrs) = ', a), list(a=i)))
}
但是我想将每个绘图保存在一个文件夹(C:/RPlots/)中,并且我还想在循环中包含此操作

我使用了下面的脚本,但它不起作用

for(i in 1:24) {
  jpeg('C:/RPlots/paste("myplot_", c(i), ".jpg")')
  plot (obs[,i],sim[,i],xlab="obs",ylab="sim",main=substitute(paste('Lead Time (hrs) = ', a), list(a=i)))
  dev.off()
}

有人能帮我吗?

您在
jpeg
通话中出错

试试这个

for(i in 1:24) {
jpeg(paste0("C:/RPlots/myplot_",i,".jpg")) 
plot (obs[,i],sim[,i],xlab="obs",ylab = "sim",
      main = substitute(paste('Lead Time (hrs) = ', a), list(a = i))) 
dev.off() 
}

您在
jpeg
调用中出错

试试这个

for(i in 1:24) {
jpeg(paste0("C:/RPlots/myplot_",i,".jpg")) 
plot (obs[,i],sim[,i],xlab="obs",ylab = "sim",
      main = substitute(paste('Lead Time (hrs) = ', a), list(a = i))) 
dev.off() 
}

您可以使用
paste
paste0
sprintf
创建名称,但在file参数中使用整数格式更简单

例如,如果使用以下命令启动jpeg设备:

jpeg('C:/RPlots/myplot_%03d.jpg')
在循环之前,然后在循环中创建多个绘图,然后第一个绘图将保存在文件myplot_001.jpg中,第二个绘图将保存在myplot_002.jpg中,第三个绘图将保存在myplot_003.jpg中,以此类推


“%03d”是重要的部分,3表示需要3位数字,0表示用0填充。根据您的偏好进行调整。

您可以使用
粘贴
粘贴0
sprintf
来创建名称,但在文件参数中使用整数格式更简单

例如,如果使用以下命令启动jpeg设备:

jpeg('C:/RPlots/myplot_%03d.jpg')
在循环之前,然后在循环中创建多个绘图,然后第一个绘图将保存在文件myplot_001.jpg中,第二个绘图将保存在myplot_002.jpg中,第三个绘图将保存在myplot_003.jpg中,以此类推


“%03d”是重要的部分,3表示需要3位数字,0表示用0填充。根据您的偏好进行调整。

正如@Greg Snow所提到的,如果您出于任何原因无法将
jpeg()
函数置于循环之外,那么C库中就有
sprintf()

paste0("C:/RPlots/myplot",sprintf("%03d",i),".jpg")

这里,
i
是for循环迭代器中的整数。这设置了前导的零填充,如果您想稍后使用
ffmpeg
等对这些图像进行迭代,这很好。

正如@Greg Snow所提到的,如果您由于任何原因无法将
jpeg()
函数置于循环之外,那么C库的名声就是
sprintf()

paste0("C:/RPlots/myplot",sprintf("%03d",i),".jpg")

这里,
i
是for循环迭代器中的整数。这将设置前导零填充,如果您想稍后使用
ffmpeg
等对这些图像进行迭代,这很好。

paste0
组合字符串而不使用粘贴。另外,我建议使用分辨率为300的PNG,详细信息请阅读
?PNG
,谢谢,infominer。那很好。谢谢你的补充信息。但我需要为特殊目的以.jpg格式获取所有绘图。:)<代码>粘贴0组合字符串而不粘贴。另外,我建议使用分辨率为300的PNG,详细信息请阅读
?PNG
,谢谢,infominer。那很好。谢谢你的补充信息。但我需要为特殊目的以.jpg格式获取所有绘图。:)我喜欢这个答案,因为它使用了内置计数器。请你编辑它(删除一个并添加一个报价)。看起来你很快就触发了:-)我喜欢这个答案,因为它使用了内置计数器。请你编辑它(删除一个并添加一个报价)。看起来你扣动扳机很快:-)