Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中,如果我在“arg_233_1_3.RData”下有一个RData文件,我怎么能仅仅通过指定“arg”来调用它呢?_R_Regex - Fatal编程技术网

在R中,如果我在“arg_233_1_3.RData”下有一个RData文件,我怎么能仅仅通过指定“arg”来调用它呢?

在R中,如果我在“arg_233_1_3.RData”下有一个RData文件,我怎么能仅仅通过指定“arg”来调用它呢?,r,regex,R,Regex,在R中,我目前有很多文件夹,在每个文件夹中,我有一个不同的.RData文件。每个RData文件都有不同的名称,但始终以arg开头。例如,arg_233_1_1.RData、arg_233_1_2.RData等 有没有一种方法可以仅仅通过调用“arg”来使用正则表达式等加载这些文件 例如,这不起作用: load("arg*.RData") 但是有这种味道的东西有效吗?谢谢。根据@MrFlick的评论,有两个工具会有所帮助: list.filespattern=^arg.*\\.RData将返回当

在R中,我目前有很多文件夹,在每个文件夹中,我有一个不同的.RData文件。每个RData文件都有不同的名称,但始终以arg开头。例如,arg_233_1_1.RData、arg_233_1_2.RData等

有没有一种方法可以仅仅通过调用“arg”来使用正则表达式等加载这些文件

例如,这不起作用:

load("arg*.RData")

但是有这种味道的东西有效吗?谢谢。

根据@MrFlick的评论,有两个工具会有所帮助:

list.filespattern=^arg.*\\.RData将返回当前目录中与该模式匹配的所有文件。这些模式遵循正则表达式规则,而不是普通的文件全局绑定规则

list.filespattern=^arg.*\\.RData,recursive=TRUE,full.names=TRUE将执行相同的操作,但查看当前或路径=。。。目录和所有子目录。full.names用于包含完整路径,否则它将只返回文件名,而不是整个路径

一旦知道如何查找它们,就可以使用以下方法之一以编程方式加载它们:

ign <- sapply(list.files(pattern="^TEX.*up.png$"), load)
以上内容应全部加载到全局环境中。如果所有变量中的所有变量都是唯一的,这可能会很好,但也可能会以静默方式覆盖变量

更安全的选择是将它们加载到捕获列表/环境中:

full_of_arg <- sapply(list.files(pattern="^TEX.*up.png$"),
                      function(fn) { e <- new.env(parent=emptyenv()); load(fn, envir=e); e; },
                      simplify=FALSE)
将返回一个环境列表,这通常已经足够好了。为此,您可以执行_arg[[1]]$varname的完整_,以在第一个arg文件中获得名为varname的变量。_arg的名称namesfull_将告诉您变量是从哪个文件中提取的

访问环境实际上与访问列表相同,尽管存在一些细微的差异,例如,无法按位置索引;也就是说,使用list.files来搜索类似命名的文件。然后将这些字符串应用于加载。