How to obtain a list of directories within a directory, like list.files(), but instead “list.dirs()”

后端 未结 7 864
梦如初夏
梦如初夏 2021-01-30 12:14

This may be a very easy question for someone - I am able to use list.files() to obtain a list of files in a given directory, but if I want to get a list of director

7条回答
  •  清歌不尽
    2021-01-30 13:06

    Update: A list.dirs function was added to the base package in revision 54353, which was included in the R-2.13.0 release in April, 2011.

    list.dirs(path = ".", full.names = TRUE, recursive = TRUE)
    

    So my function below was only useful for a few months. :)


    I couldn't find a base R function to do this, but it would be pretty easy to write your own using:

    dir()[file.info(dir())$isdir]
    

    Update: here's a function (now corrected for Timothy Jones' comment):

    list.dirs <- function(path=".", pattern=NULL, all.dirs=FALSE,
      full.names=FALSE, ignore.case=FALSE) {
      # use full.names=TRUE to pass to file.info
      all <- list.files(path, pattern, all.dirs,
               full.names=TRUE, recursive=FALSE, ignore.case)
      dirs <- all[file.info(all)$isdir]
      # determine whether to return full names or just dir names
      if(isTRUE(full.names))
        return(dirs)
      else
        return(basename(dirs))
    }
    

提交回复
热议问题