更新:一個list.dirs
功能加入到基本包在修訂54353,這是包含在四月的R-2.13.0發佈,2011年
list.dirs(path = ".", full.names = TRUE, recursive = TRUE)
所以我下面的功能只是有用幾個月。 :)
我無法找到一個基礎R功能,要做到這一點,但它會很容易寫你自己的使用:
dir()[file.info(dir())$isdir]
更新:這裏是一個函數(現在糾正蒂莫西·瓊斯評論):
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))
}
不好的形式調用兩次DIR() - 事情都有可能調用之間改變(是的,P = 0.0000001),但仍...一天! – Spacedman 2011-01-20 16:43:40
@Spacedman - 我同意,它更多的是證明了概念需要一行代碼。查看我的更新。 – 2011-01-20 16:45:41
您將需要從中刪除遞歸參數,否則您的函數將無法工作。在這種情況下,`list.files`和`dir`沒有列出它發現作爲單獨的「文件」的任何目錄,而是,R列表中的*這些目錄*找到的所有文件。由於所有的這些都將是文件,而不是目錄,你的函數返回NA` – 2011-01-20 16:56:57