在R中,如果我在“arg_233_1_3.RData”下有一个RData文件,我怎么能仅仅通过指定“arg”来调用它呢?
在R中,我目前有很多文件夹,在每个文件夹中,我有一个不同的.RData文件。每个RData文件都有不同的名称,但始终以arg开头。例如,arg_233_1_1.RData、arg_233_1_2.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将返回当
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来搜索类似命名的文件。然后将这些字符串应用于加载。