r语言 - 列出满足某些条件的目录中的*.tif文件



我想列出目录中包含特定数值的所有*.tif文件。例子:Path_source <- "C:/Files/"在这个文件夹中,我有1000个文件夹,每个文件夹命名为jobXXX,其中XXX代表数值1-999。所以有一个文件夹job0,job1,…,job999。在每个jobXXX文件夹中,我有其他文件夹和文件。从这个文件夹结构中,我想用以下模式提取所有文件:

Year <- 2021

file.ls <- list.files(path=Path_source, pattern=paste0("Text_",Year,".*\.tif"),all.files = TRUE, full.names = TRUE, recursive = TRUE)

所以我现在缺少的元素是过滤目录中具有特定作业编号的文件夹:

jobs <- c(1,14,45,67,129,834)

结果示例:

> file.ls

[1] "C:/Files/job14/folder12/Text_2021_anothertext_abc.tif"

[2] "C:/Files/job45/folder81/Text_2021_anothertext_efg.tif"

我应该使用哪个函数?

谢谢

下面的函数创建部分文件名。然后,sapply循环获取函数返回的vector中的目录。

make_dir_name <- function(Path_prefix, job_prefix, job_number){
fmt_string <- paste0(Path_prefix, job_prefix, "%d[^[:digit:]]+")
sprintf(fmt_string, job_number)
}
jobs_dirs <- make_dir_name(Path_source, "job", jobs)
i <- sapply(jobs_dirs, (d) grep(d, file.ls))
i <- unname(unlist(i))
file.ls[i]

测试数据
file.ls <-
c("C:/Files/job14/folder12/Text_2021_anothertext_abc.tif", 
"C:/Files/job45/folder81/Text_2021_anothertext_efg.tif")

使用base r可能会有帮助。

files <- paste("job", seq(1,10), ".tif", sep = "")
numbers <- seq(1,10, by = 2)
files_I_Want <- paste("job",numbers, ".tif",sep = "")
files[files %in% files_I_Want]

使用%in%操作符,我可以看到我想要向量的构造文件中有哪些文件。

相关内容

  • 没有找到相关文章

最新更新