Используя pmap PURRR, безопасно и прогрессор в R для создания индикаторов выполнения

#r #progress-bar #purrr

Вопрос:

Я пытаюсь использовать pmap и безопасно применять функцию к каждой строке входной таблицы, показывая общий прогресс.

Вся информация, которую я нашел, предполагает создание функции-оболочки, с которой я должен работать в приведенном ниже примере.

Однако я не поклонник использования анонимной функции, так как это затрудняет чтение и адаптацию кода.

Существуют ли лучшие / более чистые способы сделать это с меньшим вложением функций и т. Д.?

 example_data <- tribble(~input_col, 
                        r"(C:UsersDocumentsexample data.xlsx)", 
                        r"(C:does not exist)")


handlers(global = TRUE)
my_reader <- function(example_data) 
  {
  p <- progressor(steps  = nrow(example_data))
  
  example_data %>% 
    mutate(output= pmap(list(xlsxFile=input_col), 
                        safely(function(xlsxFile){
    Sys.sleep(2)
    p(sprintf("xlsxFile=%s", xlsxFile))
    read.xlsx(xlsxFile=xlsxFile, na.strings='')
    }))
    )
  }

#produces the outputs and progress bar 
example_data %>% my_reader %>% View()