## auxiliary functions
ExtractRelativeFilePaths <- function( subdir_name, ext ){
## auxiliary function that harvest the files of extension "ext
## of the subdirectory passed as argument
current_working_directory <- getwd()
if ( is.character(ext) & (length(ext)>0) ) {
targetFiles <- tryCatch( {
nwd <- setwd(normalizePath( subdir_name,
winslash="/",
mustWork=NA))
filePattern = paste(c(".*[.]", ext ), collapse="")
targetFiles <- list.files( getwd(),
filePattern,
recursive=TRUE)
listOfFilesWithRelativePath <- unlist(lapply( targetFiles,
function(x) file.path( subdir_name,
x ,
fsep=.Platform$file.sep ) ) )
}, warn = function(wrn){
setwd(current_working_directory)
cat("Better check results: ", wrn)
return( listOfFilesWithRelativePath )
}, error = function(err){
setwd(current_working_directory)
cat("No files with target extension found.")
return(list(" ") )
}
)
}
if( getwd() != current_working_directory ) {
setwd(current_working_directory)
listOfFilesWithRelativePath
}
else list("")
}
MakeListOfFilesOfTypeXInSubdirectories <- function( ext="sum" ) {
## Call this function to prepare a list of
## file paths and names relative to the current working directory
## of all files of extension "ext"
## Make a list of all subdirectories:
listOffilesAndDirectories <- file.info(dir()) ## look up ?file.info
logicalFilterForDirectories <- listOffilesAndDirectories$isdir # results in logical vector
listOfSubDirectories <- dir()[logicalFilterForDirectories]
rawListOfFiles <- sapply( X=listOfSubDirectories,
FUN=ExtractRelativeFilePaths,
ext,
USE.NAMES=FALSE )
flatten <- function(x) Reduce("c", x)
flatten(rawListOfFiles)
}