2016-11-09 29 views

Trả lời

1

Bạn có thể sử dụng list.files trên kết quả của list.dirs:

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

Dưới đây là một giải pháp một liner:

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

một dòng nhưng hai lệnh gọi tới 'list.dirs' không nhanh đến vậy ... – HubertL

+1

Đúng - tôi chỉ là microbench đánh dấu nó và lưu trữ 'list.dirs()' không đệ quy trong một biến có nghĩa là ~ 1,8 mili giây cho 100 lần chạy. OP có thể chọn sử dụng hai lớp lót để cải thiện hiệu quả. – Megatron

6

Nhận tên tập tin sau đó trích xuất tên thư mục:

unique(dirname(list.files(full.names = TRUE, recursive = TRUE))) 
Các vấn đề liên quan