如何将文件名重命名为另一个文件名?

问题描述 投票:0回答:2

我有间隔几天的某些日期的栅格数据文件,例如 20200110.tif、20200115.tif、20200310.tif、20200315.tif 等。在对输入文件运行一些算法(如下所述)后,我得到的输出文件为 x1.tif、x2.tif...,而我希望它们类似于输入文件名。如何实现?另外,我在 C 驱动器中获取输出。我需要知道在哪里可以在代码中定义输出目录?

library(terra)
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             
outnames <- paste0("x", 1:nlyr(x), ".tif")
writeRaster(x, outnames)
outnames

我将输出栅格文件作为 x1、x2... 并在 C 目录中,而我希望输出文件名类似于输入文件名并在输出目录中,例如F:/数据/输出。我参考了各种答案并尝试了 file.rename、gsub、substr 函数,但由于我是 R 的新手,我无法正确编写代码并获得所需的输出。

r raster
2个回答
1
投票

如果你得到没有

full.names = TRUE
的文件名,你可以使用它们来读取和保存,指定不同的目录:

library(terra)

data_dir <- "F:/Data/"
f <- list.files(path = data_dir, pattern = ".tiff$")
readnames <- paste0(data_dir, f)
r <- rast(readnames)
t <- clamp(r, 50, 750, values=FALSE)
x <- 1/10000 * t + 0             
outnames <- paste0(data_dir, "Out/", f)
writeRaster(x, outnames)

0
投票

您可以通过将文件名传递为

path/to/file
而不仅仅是
file
来定义输出路径。

对于文件名:您的

outnames
建立在您添加数字和扩展名
.tif
的字符串“x”之上。这就是为什么您的文件重命名为
x.tif
。重用对象
f
应该可以解决问题:

writeRaster(x, f)

但是您可能会收到警告或错误,因为文件已经存在。

© www.soinside.com 2019 - 2024. All rights reserved.