我的目录 (
.txt
) 中有几个 filedir
文件,它们以以下字符串开头:
files= c('sasmin_somedata.txt','sasmax_somedata.txt','sas_somedata.txt')
s=c("sasmin","sasmax","sas")
我想使用
s
列出 files
中的三个文件。
我尝试了以下代码:
p <- glob2rx(paste0(s, filedir))
final <- list.files(filedir, p, full.names=TRUE)
但是,我不断收到
sasmin
、sasmax
的重复项,因为我当前的 glob2rx
实现使用“sas”作为通配符,无法将“sas
”与“sasmin
”或“sasmax
”不同。
我不清楚这些文件的精确布局是什么。假设自从您提到
filedir
是一个目录以来就是这样。我添加了几个其他文件只是为了确保过滤正常工作。
└── somedata
├── bar.txt
├── foo.txt
├── sasmax_somedata.txt
├── sasmin_somedata.txt
├── sas_somedata.txt
└── somedata.txt
如果您想使用这些前缀作为过滤器
s <- c("sasmin", "sasmax", "sas")
然后我建议跳过使用
glob2rx
并手动滚动 REGEX。
list.files(filedir, paste(s, collapse ="|"), full.names = TRUE)
结果:
"somedata/sas_somedata.txt" "somedata/sasmax_somedata.txt" "somedata/sasmin_somedata.txt"
我建议这种方法的原因是您当前对
glob2rx()
的调用返回 REGEX 向量,我的理解是 list.files()
仅使用其中的第一个。