В R как я могу получить список файлов в папке, но не каталогов?
Я попытался использовать dir()
, list.files()
, list.dirs()
с различными параметрами,
но никто из них не работает.
В R как я могу получить список файлов в папке, но не каталогов?
Я попытался использовать dir()
, list.files()
, list.dirs()
с различными параметрами,
но никто из них не работает.
Здесь одна возможность:
all.files <- list.files(rec=F)
all.files[!file.info(all.files)$isdir]
Другой вариант (шаблон для файлов с расширениями, не столь универсальный, конечно):
Sys.glob("*.*")
setdiff(list.files(), list.dirs(recursive = FALSE, full.names = FALSE))
сделает трюк.
Другая опция:
Filter(function(x) file_test("-f", x), list.files())
И если вы хотите полностью функционировать с помощью библиотеки functional
, вы можете сэкономить несколько нажатий клавиш:
Filter(Curry(file_test, "-f"), list.files())
Этот последний преобразует file_test
в функцию с первым аргументом, установленным в "-f", что в основном является тем, что мы сделали в первом подходе, но Curry
делает это более чисто, из-за плачевного решения ключевое слово function
должно быть таким длинным (почему бы не f(x) {...}
???)
Итак, я знаю, что все они старые, и что есть принятый ответ, но я пробовал большинство из них, и никто из них не работал.
Вот что я получил:
Пример всех файлов в папке:
files <- list.files("Training/Out/")
Вывод этого кода:
[1] "Filtered" "Training_Chr01.txt" "Training_Chr02.txt" "Training_Chr03.txt"
[5] "Training_Chr04.txt" "Training_Chr05.txt" "Training_Chr06.txt" "Training_Chr07.txt"
[9] "Training_Chr08.txt" "Training_Chr09.txt" "Training_Chr10.txt"
Где первый [1] - это каталог
Запустите этот код, чтобы получить только файлы:
files <- list.files("Training/Out",recursive = TRUE)
С этим выходом:
[1] "Training_Chr01.txt" "Training_Chr02.txt" "Training_Chr03.txt" "Training_Chr04.txt"
[5] "Training_Chr05.txt" "Training_Chr06.txt" "Training_Chr07.txt" "Training_Chr08.txt"
[9] "Training_Chr09.txt" "Training_Chr10.txt"
Это более или менее помогает тем, кто смотрит на это, и был так же смущен, как и я.