class: center, middle, inverse, title-slide # Why should I use the here package when I’m already using projects? ## Blog post:
https://bit.ly/whyherepkg
### Malcolm Barrett --- # A Song of Fire and Workflows -- .large[ > If the first line of your R script is > > `setwd("C:\Users\jenny\path\that\only\I\have")` > > I will come into your office and SET YOUR COMPUTER ON FIRE 🔥. ] -- </br> .large[ > If the first line of your R script is > > `rm(list = ls())` > > I will come into your office and SET YOUR COMPUTER ON FIRE 🔥. ] --- # Only you can preventive computer fires ## Use RStudio projects. ## Use here() from the here package to write file paths --- # ~~Only you can preventive computer fires~~ ## **Use RStudio projects.** ## ~~Use here() from the here package to write file paths~~ --- # ~~Only you can preventive computer fires~~ ## ~~Use RStudio projects.~~ ## **Use here() from the here package to write file paths** --- class: inverse, center, middle # **Why should I use the here package when I'm already using projects?** --- ```r here_here |--data |--mtcars.csv |--figs |--mpg_hp.png |--rmd |--01_read_data.Rmd |--01_read_data.pdf |--scripts |--read_data.R *|--here_here.Rproj ``` .large[Example Project: https://github.com/malcolmbarrett/here_here] --- ```r here_here *|--data |--mtcars.csv *|--figs |--mpg_hp.png *|--rmd |--01_read_data.Rmd |--01_read_data.pdf *|--scripts |--read_data.R |--here_here.Rproj ``` .large[Example Project: https://github.com/malcolmbarrett/here_here] --- class: inverse, center, middle # **here works from the project root up** --- ## In `rmd/01_read_data.Rmd`: ```r library(tidyverse) read_csv("data/mtcars.csv") ``` -- ```r ## Error: 'data/mtcars.csv' does not exist in current working directory ``` --- ```r library(here) read_csv(here("data", "mtcars.csv")) ``` -- ``` ## # A tibble: 32 x 11 ## mpg cyl disp hp drat wt qsec vs am gear carb ## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> ## 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4 ## 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4 ## 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1 ## 4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1 ## 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2 ## 6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1 ## 7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4 ## 8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2 ## 9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2 ## 10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4 ## # … with 22 more rows ``` --- class: inverse, center, middle # **here bottles up several best practices** --- class: inverse 1. Use RStudio Projects 2. 🔥Avoid `setwd("/absolute/paths")` and `rm(list = ls())`🔥 3. Use `here::here()` to work from the project up --- class: inverse, center, middle  ###
[malcolmbarrett](https://github.com/malcolmbarrett/) ###
[@malco_barrett](https://twitter.com/malco_barrett) ###
[malco.io](https://malco.io) Blog post: [https://bit.ly/whyherepkg](https://bit.ly/whyherepkg) Slides created via the R package [xaringan](https://github.com/yihui/xaringan).