是否可以让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)所以我希望有一些方法,但我似乎无法找到正确的调用...
答案 0 :(得分:1)
我只是提到,你也可以使用system
(实习生参数设置为TRUE)并调用你想要使用的任何系统命令,如果它没有直接暴露在R的Sys.*()
中例如,这只是为csv文件调用ls
:
x <- system("ls *.csv", intern=TRUE)
答案 1 :(得分:0)
听起来很有用。
实际的工作是由R源代码文件do_glob()
中的src/main/sysutils.c
子例程完成的 - 也许你可以从那里开始修补补丁?
GLOB_MARK
已经有条件地添加(在可用时),所以也许你可以影响那个工作?
答案 2 :(得分:0)
对于您的特定示例,您可以首先使用expand_braces
中的bracer
函数在所需的路径上进行大括号扩展,然后将可能路径的字符向量传递到Sys.glob
,即< / p>
Sys_glob <- function(paths, dirmark = FALSE) {
paths <- lapply(paths, bracer::expand_braces)
paths <- c(paths, recursive=TRUE)
base::Sys.glob(paths, dirmark=dirmark)
}