2016-11-09 50 views
6

有沒有簡單的方法只列出非空的目錄?列出非空目錄

我知道list.dirs,但我找不到方法列出只有非空的目錄。

回答

1

您可以在list.dirs結果使用list.files

dirlist <- list.dirs("./R/R-3.3.1/library/zoo") 
dirlist [sapply(dirlist, function(x) length(list.files(x))>0)] 
1

這裏是一個班輪解決方案:

nonempty <- list.dirs(recursive=F)[which(lengths(lapply(list.dirs(recursive=F), list.files)) > 0)] 
+0

一行但兩個調用'list.dirs'不是那麼快... – HubertL

+1

真的 - 我只是微型平臺標記它,並且將非遞歸的'list.dirs()'存儲在一個變量中,對於100次運行來說,平均減少約1.8毫秒。 OP可以選擇使用雙線來提高效率。 – Megatron

6

獲取文件名,然後解壓目錄名稱:

unique(dirname(list.files(full.names = TRUE, recursive = TRUE)))