微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 glob2rx list.files 提取文件

如何解决使用 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" 

我想提取包含 wwdate_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 here

glob2rx(paste0("*WW","*",date_needed,"*.png"),trim.head = TRUE)
# [1] "WW.*03_Mar_2021.*\\.png$"

但它不起作用:

pnglist <- list.files(path = "folder/",pattern = glob2rx(paste0("*ww",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"

或者,使用直接使用 globs 的 Sys.glob

glob2 <- file.path(folder,paste0("*ww*","*.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","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"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。