我有一个复杂的数据集,分布在每个城市(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---**}
然而,我以这种方式留下了一个无休止的循环。如何有效地完成这项工作?
答案 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”目录
的路径调用该函数