2016-11-09 19 views
6

Yalnızca boş olmayan dizinleri listelemenin kolay bir yolu var mı?Boş olmayan dizinleri göster

list.dirs'un farkındayım, ancak yalnızca boş olmayan dizinleri listelemenin yolunu bulamadım. Sen list.dirs sonucuna list.files kullanabilirsiniz

cevap

1

: Burada

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

tek liner çözüm:

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

bir satır ama çok hızlı değil "list.dirs" iki çağrı ... – HubertL

+1

Doğru - sadece microbench işaretli ve değişken olmayan 'list.dirs()' değişkenini bir değişkende saklamak ortalama 100 çalışma için ortalama 1.8 milyon saniyedir. OP, daha iyi verimlilik için iki astar kullanmayı tercih edebilir. – Megatron

6

dosya adları daha sonra dizin adını ayıklamak alın:

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