递归搜索子目录以查找文件的第一个实例

时间:2015-01-23 15:33:10

标签: r file-io

我有一个复杂的数据集,分布在每个城市(C)的80个目录中。这些城市中的每一个都有不同深度的多个不同的子目录。澄清这意味着,例如:city 1可以有5个子目录a-e,其中每个子目录也可以有多个子目录。现在我需要在每个终端子目录中找到.txt文件的第一个实例,并将函数应用于txt文件(已编写的逻辑函数)。前终端子目录中没有.txt文件。

 lapply(list.dirs,function(x) {
if length(list.files(path=x,pattern=".txt"))==0 { 
**apply function to .txt file}**
else {**lapply list.dirs etc---**} 

然而,我以这种方式留下了一个无休止的循环。如何有效地完成这项工作?

1 个答案:

答案 0 :(得分:2)

你可能需要这样的东西:

Treat_txt<-function(direct){
                if(length(list.files(direct,pattern=".txt"))){
                     do what you need to do with the text file
                } else {
                     dirs<-list.dirs(direct,full.names=T,recursive=F)
                     sapply(dirs,Treat_txt)
                }
           }

然后您可以使用“top”目录

的路径调用该函数