Upgrade to Pro — share decks privately, control downloads, hide ads and more …

reprex: help me help you!

reprex: help me help you!

reprex R package: description and philosophy
http://jennybc.github.io/reprex/
part of rOpenSci Community Call 2017 March 7
https://github.com/ropensci/commcalls/issues/14

Jennifer (Jenny) Bryan

March 07, 2017
Tweet

More Decks by Jennifer (Jenny) Bryan

Other Decks in Programming

Transcript

  1.  
    Jennifer Bryan 

    RStudio, University of British Columbia
    @JennyBryan @jennybc
    reprex:
    the package, the point

    View Slide

  2. How to ask questions so they get answered!
    Possibly by yourself!
    2017 March 07
    w/ James (JD) Long, Jenny Bryan, Scott Chamberlain
    an rOpenSci Community call:
    https://github.com/ropensci/commcalls/issues/14
    Collaborative notes:
    http://bit.ly/commcallv13

    View Slide

  3. View Slide

  4. http://stat545.com
    300-500 GitHub issue comments
    by me Sept-Nov each year

    View Slide

  5. conversations about code are more productive
    when they contain code
    code that actually runs
    code that I don’t have to run
    code that I can easily run

    View Slide

  6. https://github.com/jennybc/reprex
    http://jennybc.github.io/reprex/

    View Slide

  7. install.packages("reprex")
    ## or
    devtools::install_github("jennybc/reprex")

    View Slide

  8. View Slide

  9. code that actually runs
    code is run in separate, fresh R session
    ergo, it must be self-contained!
    must load all necessary packages
    must create all necessary objects

    View Slide

  10. not self-contained — forgot to load necessary package
    not self-contained — forgot to define template
    YAAAASSSSSS

    View Slide

  11. code that I don’t have to run
    did I mention: I touch 300 - 500 issues/course?
    I can often get the point w/o running code IFF
    I can see the output
    SHOW ME SOME OUTPUT, not just the code

    View Slide

  12. View Slide

  13. code that I can easily run
    do not copy/paste your R transcript
    do not take a screenshot of your R session
    must I edit out the prompts?
    must I comment the output?
    HELP ME HELP YOU

    View Slide

  14. > library(purrr)
    > x <- list(one = list(always = "a", sometimes = "b"),
    + two = list(always = "b", sometimes = NULL))
    > x %>% map_chr("always")
    one two
    "a" "b"
    > x %>% map_chr("sometimes")
    Error: Result 2 is not a length 1 atomic vector

    View Slide

  15. library(purrr)
    x <- list(one = list(always = "a", sometimes = "b"),
    two = list(always = "b", sometimes = NULL))
    x %>% map_chr("always")
    #> one two
    #> "a" "b"
    x %>% map_chr("sometimes")
    #> Error: Result 2 is not a length 1 atomic vector

    View Slide

  16. live demo

    View Slide

  17. basic copy + reprex()
    copy + add-in
    select or focus + add-in
    venue = “so”, venue= “R”
    si = TRUE
    input, outfile
    include a figure
    reprex_invert()
    reprex_clean()
    reprex_rescue()
    stuff I hope to show

    View Slide

  18. Why make a reprex?

    View Slide

  19. 1. get help
    2. bug report

    View Slide

  20. https://github.com/jennybc/reprex#what-is-a-reprex

    View Slide

  21. writing a good reprex can seem like a hassle
    but if asker can’t be bothered,
    why should the answerer?
    practice this often and
    it will make you a better programmer
    it will increase your knowledge of the language

    View Slide

  22. writing a reprex helps you ambush your problem
    from behind
    “demonstrate my problem in a small example”
    sounds so much more doable than
    “figure out how my code is borked”
    > x% of the time I solve my own problem,
    but the reprex mentality is enabling

    View Slide

  23. View Slide