r - 使用 R 在单个 .pdf 中保存多个栅格的有效方法
问题描述
我对 R 很陌生,想知道是否有比手动输入每个栅格文件名更快的方法来在单个 .pdf 中保存多个栅格,如下所示:
pdf(file = "file_name.pdf", width = 11, height = 8.5)
plot(raster(file.path(dir_path_data,"nutrient_pollution_2003_impact.tif")))
plot(raster(file.path(dir_path_data,"nutrient_pollution_2004_impact.tif")))
plot(raster(file.path(dir_path_data,"nutrient_pollution_2005_impact.tif")))
plot(raster(file.path(dir_path_data,"nutrient_pollution_2006_impact.tif")))
plot(raster(file.path(dir_path_data,"nutrient_pollution_2007_impact.tif")))
plot(raster(file.path(dir_path_data,"nutrient_pollution_2008_impact.tif")))
plot(raster(file.path(dir_path_data,"nutrient_pollution_2009_impact.tif")))
plot(raster(file.path(dir_path_data,"nutrient_pollution_2010_impact.tif")))
plot(raster(file.path(dir_path_data,"nutrient_pollution_2011_impact.tif")))
plot(raster(file.path(dir_path_data,"nutrient_pollution_2012_impact.tif")))
plot(raster(file.path(dir_path_data,"nutrient_pollution_2013_impact.tif")))
plot(raster(file.path(dir_path_data,"nutrient_pollution_2003-2013_trend.tif")))
dev.off()
预先感谢您的帮助!
解决方案
从文件名向量开始,您可以通过 list.files 获得。或许像这样
f <- list.files(dir_path_data, pattern="^nutrient_pollution.*\\.tif$", full=TRUE)
您现在可以使用lapply
library(raster)
pdf(file = "file_name.pdf", width = 11, height = 8.5)
lapply(f, function(n) plot(raster(n)))
dev.off()
或者使用循环
pdf(file = "file_name.pdf", width = 11, height = 8.5)
for (n in f) {
r <- raster(n)
plot(r)
}
dev.off()
如果栅格具有相同的范围和分辨率,您也可以这样做
s <- stack(f)
pdf(file = "file_name.pdf", width = 11, height = 8.5)
for (1 in 1:nlayers(s)) {
plot(s[[i]])
}
dev.off()
推荐阅读
- python - Python Numpy 初学者:获取形状为 ((M,N),(M,N)) 的数组
- reactjs - 在 ReactJS 中没有渲染方法的渲染组件
- regex - 带有条件和后缀的正则表达式
- javascript - JS:使用字典比遍历数组更快吗?
- android - 当应用程序的多个页面在 Kotlin 中具有相同的 Activity 名称时,如何启动 Android Activity?
- etl - Source 和 Source Qualifier 之间的字段顺序需要相同吗?
- c# - 连接多个表并返回表 2 中的最后一条记录
- jpa - 使用 JPA CriteriaBuilder 的多级子查询
- apache-kafka - 如何将具有显式状态存储的 KTable-KTable leftJoin 从 Kafka 0.11 迁移到 Kafka 2.0?
- javascript - 检查反应用户是否有角色