Я пытаюсь получить файлы с 3 сетевых дисков, используя list.files
, и это требуется навсегда. Когда я использую find
в оболочке, он возвращает все результаты менее чем за 15 секунд.Проблемы с производительностью list.files
system.time(
jnk <- list.files(c("/Volumes/massspec", "/Volumes/massspec2", "/Volumes/massspec3"),
pattern='_MA_.*_HeLa_',
recursive=TRUE))
# user system elapsed
# 1.567 6.381 309.500
Вот эквивалентная команда оболочки.
time find /Volumes/masssp* -name *_MA_*_HeLa_*
# real 0m13.776s
# user 0m0.361s
# sys 0m0.620s
Мне нужно решение, которое работает в системах Windows и Unix. У кого-нибудь хорошая идея? Сетевые диски имеют около 120 000 файлов, но около 16 ТБ. Так что не так много файлов, но очень больших.
Что мешает вам выполнять системный вызов 'find' для создания списка? Существуют портативные версии поиска для окон. Packaginf это с вашим скриптом не должно быть реальной проблемой. – Tensibai
Я надеялся, что есть способ обойти это, но, к сожалению, я должен использовать это решение, да ... – drmariod