0

是否可以让 R 的 Sys.glob() 函数扩展大括号?我的意思是类似于 /home/foo/{a,b}/bar.txt 的模式应该找到文件 /home/foo/a/bar.txt 和 /home/foo/b/bar.txt 如果它们都存在. 默认情况下,R 不展开大括号。

使用 GLOB_BRACE 标志可以在 glob(3) 中进行大括号扩展。我猜 R 只是在幕后调用 glob(3) 所以我希望有某种方法,但我似乎找不到正确的调用......

4

3 回答 3

1

我只是提到,您也可以使用system(将 intern 参数设置为 TRUE)并调用您想要使用的任何系统命令,如果它没有直接暴露Sys.*()在 R 中。例如,这只需要lscsv 文件:

x <- system("ls *.csv", intern=TRUE)
于 2010-06-22T17:16:37.453 回答
0

听起来很有用。

实际工作是由R 源do_glob()文件中的子程序完成的src/main/sysutils.c——也许你可以从那里开始着手开发补丁?

GLOB_MARK已经有条件地添加(在可用时),所以也许你可以隐藏这项工作?

于 2010-06-22T17:13:11.173 回答
0

bracer包的函数glob()是一个包装器,Sys.glob()它在执行大括号扩展后查找文件。在您的特定示例bracer::glob("/home/foo/{a,b}/bar.txt")中,确实会找到文件/home/foo/a/bar.txt,并且/home/foo/b/bar.txt它们是否都应该存在。

于 2019-08-08T20:30:34.870 回答