使用 glob2rx list.files 提取文件
extract files using glob2rx list.files
我想要 list.files
包含某物和某物并以 .png
结尾。我可以分步完成,但感觉比使用 glob2rx
更容易。这些是文件:
[1] "cc_ww_03_Mar_2021_.png"
[2] "cc_ww_05_Mar_2021_.png"
[3] "pp_ui_03_Mar_2021_.png"
[4] "zz_ww_03_Mar_2021_.png"
[5] "pp_ui_03_Mar_2021_.png"
[6] "cd_ww_03_Mar_2021_.png"
[7] "cd_ww_03_Mar_2021_.csv"
我想提取包含 ww
和 date_needed <- "03_Mar_2021"
并以 .png
:
结尾的文件
[1] "cc_ww_03_Mar_2021_.png"
[4] "zz_ww_03_Mar_2021_.png"
[6] "cd_ww_03_Mar_2021_.png"
为了删除 ^
我包括 trim.head
讨论 :
glob2rx(paste0("*WW", "*", date_needed, "*.png"), trim.head = TRUE)
# [1] "WW.*03_Mar_2021.*\.png$"
但它不起作用:
pnglist <- list.files(path = "folder/",
pattern = glob2rx(paste0("*ww", "*", date_needed, "*.png"), trim.head = TRUE),
full.names = T)
pnglist
# character(0)
我错过了什么? glob2rx
是这里最干净的选项吗?
谢谢
问题中的glob使用大写WW,但文件名使用小写ww。您也可以检查文件夹路径是否正确。使用
- 在最后的注释中输入
- 问题中的 glob 但将 WW 更改为 ww 并简化了一点
- 使用 TRUE 而不是 T,因为 T 可能是一个屏蔽它的变量
- 删除我们不需要的参数
我们有:
glob <- paste0("*ww*", date_needed, "*.png")
list.files(path = folder, pattern = glob2rx(glob), full.names = TRUE)
## [1] "./cc_ww_03_Mar_2021_.png" "./cd_ww_03_Mar_2021_.png"
## [3] "./zz_ww_03_Mar_2021_.png"
或者,使用直接使用 glob 的 Sys.glob
:
glob2 <- file.path(folder, paste0("*ww*", date_needed, "*.png"))
Sys.glob(glob2)
## [1] "./cc_ww_03_Mar_2021_.png" "./cd_ww_03_Mar_2021_.png"
## [3] "./zz_ww_03_Mar_2021_.png"
备注
使用的输入是:
filenames <- c( "cc_ww_03_Mar_2021_.png",
"cc_ww_05_Mar_2021_.png",
"pp_ui_03_Mar_2021_.png",
"zz_ww_03_Mar_2021_.png",
"pp_ui_03_Mar_2021_.png",
"cd_ww_03_Mar_2021_.png",
"cd_ww_03_Mar_2021_.csv")
for(f in filenames) cat(file = f)
folder <- "."
date_needed <- "03_Mar_2021"
我想要 list.files
包含某物和某物并以 .png
结尾。我可以分步完成,但感觉比使用 glob2rx
更容易。这些是文件:
[1] "cc_ww_03_Mar_2021_.png"
[2] "cc_ww_05_Mar_2021_.png"
[3] "pp_ui_03_Mar_2021_.png"
[4] "zz_ww_03_Mar_2021_.png"
[5] "pp_ui_03_Mar_2021_.png"
[6] "cd_ww_03_Mar_2021_.png"
[7] "cd_ww_03_Mar_2021_.csv"
我想提取包含 ww
和 date_needed <- "03_Mar_2021"
并以 .png
:
[1] "cc_ww_03_Mar_2021_.png"
[4] "zz_ww_03_Mar_2021_.png"
[6] "cd_ww_03_Mar_2021_.png"
为了删除 ^
我包括 trim.head
讨论
glob2rx(paste0("*WW", "*", date_needed, "*.png"), trim.head = TRUE)
# [1] "WW.*03_Mar_2021.*\.png$"
但它不起作用:
pnglist <- list.files(path = "folder/",
pattern = glob2rx(paste0("*ww", "*", date_needed, "*.png"), trim.head = TRUE),
full.names = T)
pnglist
# character(0)
我错过了什么? glob2rx
是这里最干净的选项吗?
谢谢
问题中的glob使用大写WW,但文件名使用小写ww。您也可以检查文件夹路径是否正确。使用
- 在最后的注释中输入
- 问题中的 glob 但将 WW 更改为 ww 并简化了一点
- 使用 TRUE 而不是 T,因为 T 可能是一个屏蔽它的变量
- 删除我们不需要的参数
我们有:
glob <- paste0("*ww*", date_needed, "*.png")
list.files(path = folder, pattern = glob2rx(glob), full.names = TRUE)
## [1] "./cc_ww_03_Mar_2021_.png" "./cd_ww_03_Mar_2021_.png"
## [3] "./zz_ww_03_Mar_2021_.png"
或者,使用直接使用 glob 的 Sys.glob
:
glob2 <- file.path(folder, paste0("*ww*", date_needed, "*.png"))
Sys.glob(glob2)
## [1] "./cc_ww_03_Mar_2021_.png" "./cd_ww_03_Mar_2021_.png"
## [3] "./zz_ww_03_Mar_2021_.png"
备注
使用的输入是:
filenames <- c( "cc_ww_03_Mar_2021_.png",
"cc_ww_05_Mar_2021_.png",
"pp_ui_03_Mar_2021_.png",
"zz_ww_03_Mar_2021_.png",
"pp_ui_03_Mar_2021_.png",
"cd_ww_03_Mar_2021_.png",
"cd_ww_03_Mar_2021_.csv")
for(f in filenames) cat(file = f)
folder <- "."
date_needed <- "03_Mar_2021"