1

完全被难住了,虽然这似乎是一个简单的问题,很快就会被否决为重复,但我找不到正确的“模式”来寻找答案。

我正在寻找与双重模式匹配的文件夹中的文件,然后想在 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选项。任何帮助都会很棒。谢谢!

4

3 回答 3

4

用于glob2rx获取对应的正则表达式

> glob2rx("foo*bar*")
[1] "^foo.*bar"

> grep(glob2rx("foo*bar*"), lf, value=TRUE)
[1] "foo_23_bar.txt"
于 2013-05-09T16:00:16.493 回答
3

我通常使用系统功能。看看这里。http://stat.ethz.ch/R-manual/R-patched/library/base/html/system.html

于 2013-05-09T18:20:24.877 回答
0

嗯..有用的答案之一已经消失了。无论如何,这正是我的想法,结合马丁和迈克尔的(?)答案:

list.files(path="data/",pattern=glob2rx("*foo*bar*"))

或者,由炳军解决:

lf <- system("ls data/*foo*bar*")

这具有为文件名提供路径的额外好处,使直接将它们读入 R 变得更简单。

于 2013-05-09T16:34:56.817 回答