如何将R处理后的栅格输出文件名改为输入文件名并指定输出目录?
解决R语言terra包输出栅格文件名与输入一致并指定输出目录的问题
直接修改代码即可实现需求,核心是从输入文件路径中提取原文件名,再与目标输出目录拼接:
library(terra) # 注意:如果你的文件后缀是.tif而非.tiff,把pattern改成"\\.tif$"(.是正则通配符,需转义) f <- list.files(path="F:/Data/", pattern="\\.tiff$", full.names=TRUE) r <- rast(f) t <- clamp(r, 50, 750, values=FALSE) x <- 1/10000 * t + 0 # 指定输出目录 out_dir <- "F:/Data/Out" # 确保输出目录存在,不存在则自动创建 if (!dir.exists(out_dir)) dir.create(out_dir, recursive = TRUE) # 生成输出文件的完整路径:输出目录 + 原始文件名 outnames <- file.path(out_dir, basename(f)) # 按层输出到指定路径,文件名与输入完全一致 writeRaster(x, outnames, overwrite=TRUE) outnames
关键代码说明
basename(f):从完整文件路径中提取纯文件名(比如从F:/Data/20200110.tif得到20200110.tif)file.path(out_dir, basename(f)):自动拼接输出目录和文件名,避免手动写路径分隔符出错dir.create(out_dir, recursive = TRUE):自动创建多级输出目录,无需手动提前创建writeRaster的overwrite=TRUE:若输出目录已有同名文件会直接覆盖,不需要可删除该参数
内容的提问来源于stack exchange,提问作者Michael_Brun
相关产品推荐
相关产品推荐

