list.files в R возвращает очень противоречивые результаты - PullRequest
3 голосов
/ 04 августа 2020

Надеюсь, я не упускаю что-то очевидное, но вот оно. И я прошу прощения, так как я не знаю, как сделать это воспроизводимым.

У меня есть более миллиона изображений следовой камеры (.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 (с учетом регистра, журналируемый). Я не уверен, какие еще детали оборудования могут иметь значение.

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...