循环浏览文件夹并在R中查找特定文件

时间:2016-08-22 17:52:19

标签: r file loops

我正在尝试遍历目录中的许多文件夹,查找隐藏在其中一个文件夹中的特定xml文件。然后我想保存该文件的位置,然后针对该文件运行我的代码(我不会在此包含该代码)。我在这里要问的是循环遍历所有文件夹,然后打开特定文件。 例如: 我的主文件夹是:C:\ Parsing 它有两个文件夹名为" folder1"和" folder2"。 每个文件夹都有一个我感兴趣的xml文件,让我们说它叫做#34; needed.xml" 我想有一个循环遍历目录的脚本并找到那些特定的脚本。 你知道我在R中的表现吗?

3 个答案:

答案 0 :(得分:1)

使用list.filesgrepl,您可以递归查看所有子文件夹

rootPath="C:\Parsing"
listFiles=list.files(rootPath,recursive=TRUE)
searchFileName="needed.xml"

presentFile=grepl(searchFileName,listFiles)


if(nchar(presentFile)) cat("File",searchFileName,"is present at", presentFile,"\n")

答案 1 :(得分:0)

这是你正在寻找的吗?

require(XML)

fol <- list.files("C:/Parsing")

for (i in fol){
               dir <- paste("C:/Parsing" , i, "/needed.xml",  sep = "")

                 if(file.exists(dir) == T){
                                           needed <- xmlToList(dir) 
                                           }
              }

这将找到您的xml文件并将其作为列表读入R中。如果您希望输出是数据本身,或者只是数据的目录位置,然后可以将其提供给另一个函数/脚本,我就不清楚您的问题。如果您只想要该位置,请删除&#39; xmlToList&#39;功能

答案 2 :(得分:0)

我会做这样的事情(如果需要,用你的filename.xml替换* .xml):

<head>

这会以递归方式查找路径list.files(path = "C:\Parsing", pattern = "*.xml", recursive = TRUE, full.names = TRUE) 中扩展名为.xml的文件,并返回匹配文件的C:\Parsing