Skip to content

Suggestion: include a function decorator that works with progressr #122

@tanho63

Description

@tanho63

I was wondering if it would make sense to have a function decorator explicitly for (simple) progress updates, so that I can extend the behaviour of pre-existing functions - something like:

progressively <- function(f, p = NULL){
  if(is.null(p)) p <- function(...) NULL
  force(f)

  function(...){
    on.exit(p("loading..."))
    f(...)
  }

}

which then could be called like:

read_rosters <- function(){
  urls <- c("https://github.com/nflverse/nflfastR-roster/raw/master/data/seasons/roster_2020.csv", "https://github.com/nflverse/nflfastR-roster/raw/master/data/seasons/roster_2021.csv")
  p <- progressor(along = urls)
  purrr::map_dfr(urls, progressively(read.csv, p))
}

x <- with_progress(read_rosters())

This is inspired by Hadley's notes on function operators in Advanced R, and purrr's quietly/safely set of decorators

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions