R 在循环中命名jpg文件
我正在做一个循环操作,从两个数据帧(obs和sim)的同一列读取数据,并生成散点图。每个数据帧中总共有24列。下面的脚本工作正常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/)中,并且我还想在循环中包含此操作 我使用了下面的脚本,但它不
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格式获取所有绘图。:)我喜欢这个答案,因为它使用了内置计数器。请你编辑它(删除一个并添加一个报价)。看起来你很快就触发了:-)我喜欢这个答案,因为它使用了内置计数器。请你编辑它(删除一个并添加一个报价)。看起来你扣动扳机很快:-)