Я загружаю в большой файл данных, используя fread
из: library(data.table)
. fread
по умолчанию показывает, сколько времени занимает чтение файла, но выводит только на консоль .
Я бы хотел зафиксировать время загрузки данных и отобразить его в реальном времени в блестящем приложении, чтобы пользователь понимал причину задержки и ориентировочно сколько времени занимает чтение данных. Я хотел бы использовать withProgress
, так как это создает полосу загрузки, и вы можете отобразить текст, определяющий, что делает программа.
Как правило, withProgress
увеличивается по числовой шкале с использованием incProgress
, однако я ищу способ сделать что-то вроде этого:
withProgress(message = 'Loading Data', {
d <- fread("file_name.csv") # Pick a random (large) file to load
})
Проблема с приведенным выше кодом заключается в том, что строка загрузки не увеличивается (я не думаю, что withProgress
автоматически определяет загрузку по fread
). Индикатор загрузки отображается и увеличивает его на небольшую величину, но он неправильно фиксирует время загрузки с fread
.
Update
Мне удалось найти этот аналогичный вопрос, однако единственный ответ на этот вопрос использует полосу загрузки, чтобы указать прогресс загрузки многих файлов (Loaded 2 of n files
). Моя проблема заключается в попытке показать прогресс чтения в одном большом файле.
Я знаю, fread
знает, сколько строк содержит файл после первоначального сканирования, потому что в консоли он показывает прогресс. Мне просто нужно знать, как подключиться к нему, чтобы использовать его в индикаторе выполнения.
Вот пример того, как fread
отображает текущее чтение:
Документация на фред
Если вы посмотрите документацию для fread
, то вот что она говорит о встроенной опции showProgess
:
TRUE displays progress on the console using \r.
It is produced in freads C code where the very nice (but R level)
txtProgressBar and tkProgressBar are not easily available.
showProgress = getOption("datatable.showProgress") # default: TRUE