完全难倒,虽然这似乎是一个简单的问题,很快就会被重复投票,但我找不到合适的“模式”来搜索答案。
我正在寻找符合双重模式的文件夹中的文件,然后想要在R中打开它们。所以,假设list.files
产生以下内容:
lf <- c("foo_23_bar.txt", "goo_42_mar.txt", "boo_42_bar.txt")
在命令行中,我会使用ls foo*bar
来查找第一个文件,但在R中,可以使用
grep(paste("foo","bar",sep="|"),lf)
返回文件1和3.我不确定如何使用perl=TRUE
选项。任何帮助都会很棒。谢谢!
答案 0 :(得分:4)
使用glob2rx
获取相应的正则表达式
> glob2rx("foo*bar*")
[1] "^foo.*bar"
和
> grep(glob2rx("foo*bar*"), lf, value=TRUE)
[1] "foo_23_bar.txt"
答案 1 :(得分:3)
答案 2 :(得分:0)
list.files(path="data/",pattern=glob2rx("*foo*bar*"))
或者,正如Bingjun所解决的那样:
lf <- system("ls data/*foo*bar*")
这提供了带路径的文件名的额外好处,使得直接将它们读入R更加简单。