对于某人来说,这可能是一个非常简单的问题 - 我可以用来list.files()获取给定目录中的文件列表,但是如果我想获得目录列表,我该怎么做?它在某种程度上就在我面前作为一种选择list.files()吗?
此外,我正在使用Windows,所以如果答案是支持某些Linux/unix命令,那对我来说无效.
.NET例如有一个Directory.GetFiles()方法和一个单独的Directory.GetDirectories()
方法,所以我认为R会有一个类似的对.提前致谢.
Jos*_*ich 93
更新:list.dirs在版本54353中的基础软件包中添加了一个功能,该功能包含在2011年4月的R-2.13.0版本中.
list.dirs(path = ".", full.names = TRUE, recursive = TRUE)
所以下面我的功能只用了几个月.:)
我找不到一个基本的R函数来做这个,但用自己编写自己很容易:
dir()[file.info(dir())$isdir]
更新:这是一个功能(现已更正Timothy Jones的评论):
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))
}
jba*_*ums 27
baseR现在包含一个list.dirs功能,因此不再需要自制的变体.
例如:
list.dirs('.', recursive=FALSE)
Tal*_*ili 16
只是为了更新这个帖子:
我看到在较新版本的R(目前我正在使用2.5.1)中,现在list.dirs基本安装中包含一个函数:
list.dirs隐式地具有all.files = TRUE,并且如果recursive = TRUE,则答案包括路径本身(假设它是可读目录).
list.dirs <- function(...) {
    x <- dir(...)
    x[file_test("-d", x)]
}
可能有用吗?
我们怎么可能递归地做这件事?(打破这些函数的recursive参数dir因为它永远不会返回目录名,只返回每个目录中的文件等等).