Надеюсь, я не упускаю что-то очевидное, но вот оно. И я прошу прощения, так как я не знаю, как сделать это воспроизводимым.
У меня есть более миллиона изображений следовой камеры (.JPG) на внешнем жестком диске. Мне нужно рекурсивно извлечь их имена файлов, что я делаю довольно регулярно. Это привлекло мое внимание совершенно случайно, и, к моему ужасу, list.files () не возвращает идентичные результаты - фактически, количество возвращаемых файлов варьируется от 295 до 1 214 657. В этом конкретном случае у меня есть 4 уровня подпапок до финальных файлов .JPG. Проверяя это всего за 10 итераций:
> dir <- "/Volumes/Death_Valley_TC/Mojave_Desert_TC/"
> file.exists(dir)
[1] TRUE
> files <- list()
> for(i in 1:10){
> files[[i]] <- list.files(dir, recursive = T)
> print(i)
> }
Я нахожу:
> lengths(files)
[1] 85328 1214657 1214657 23429 1214657 1214657 1214657 150164 295 150164
Если я проверяю bash с:
ls -R | wc -l
, я получаю другое результат: 1 218 903, что соответствует 10 попыткам.
При просмотре файлов, фактически выводимых на каждой итерации, кажется, что рекурсивная функция останавливается после завершения подпапки терминала, поэтому, возможно, она находит свое условие разрыва преждевременно?
Я работаю на Ma c OSX 10.13.6 с R версии 4.0.0. Жесткий диск - 2 ТБ La cie USB- C, Ma c OS Extended (с учетом регистра, журналируемый). Я не уверен, какие еще детали оборудования могут иметь значение.
Большое спасибо!