Keyboard shortcut to open settings⌘ + ,
in Mac OS,ctrl + ,
in Windows
keep all the files associated with a project together — input data, R scripts, analytic results, figures.
usethis::create_project("project_name")
Click File > New Project
Or click on the upper right
name_of_project|--raw_data |--WhateverData.xlsx |--report_2017.csv|--output_data |--summary2017.csv|--rmd |--01-analysis.Rmd|--docs |--01-analysis.html |--01-analysis.pdf|--scripts |--exploratory_analysis.R |--pdf_scraper.R|--figures |--weather_2017.png|--name_of_project.Rproj|--run_all.R
library(fs)folder_names <- c("raw_data", "output_data", "rmd", "docs", "scripts", "figures")dir_create(fldr_names)
never modify raw data, only read (forever untouched)
library(tidyverse)# data importdata <- read_csv("/Users/Emil/Research/Health/amazing_data.csv")
library(tidyverse)# data importdata <- read_csv("/Users/Emil/Research/Health/amazing_data.csv")
## Error: '/Users/Emil/Research/Health/amazing_data.csv' does not exist.
library(tidyverse)# data importdata <- read_csv("/Users/Emil/Research/Health/amazing_data.csv")
## Error: '/Users/Emil/Research/Health/amazing_data.csv' does not exist.
library(here)here()
## [1] "/Users/Emil/Research/Health"
library(here)data <- read_csv(here("raw_data", "amazing_data.csv"))
report.pdfreportv2.pdfreportthisisthelastone.pagesFigure 2.png 3465-234szx.rfoo.R
2018-10-01_01_report-for-cdc.pdf01_data.rmd01_data.pdf02_data-filtering.rmd02_data-filtering.pdf
Follow narrative from folder structure slide
jenny Bryan naming things
to preserve chronological and logical ordering.
library(fs)dir_ls("data/", regexp = "health-study")
## 2018-02-23_health-study_power-100_group-A1.csv## 2018-02-23_health-study_power-100_group-B1.csv## 2018-02-23_health-study_power-100_group-C1.csv## 2018-02-23_health-study_power-200_group-A1.csv## 2018-02-23_health-study_power-200_group-B1.csv## 2018-02-23_health-study_power-200_group-C1.csv
library(fs)dir_ls("data/", regexp = "health-study")
## 2018-02-23_health-study_power-100_group-A1.csv## 2018-02-23_health-study_power-100_group-B1.csv## 2018-02-23_health-study_power-100_group-C1.csv## 2018-02-23_health-study_power-200_group-A1.csv## 2018-02-23_health-study_power-200_group-B1.csv## 2018-02-23_health-study_power-200_group-C1.csv
stringr::str_split_fixed(x, "[_\\.]", 5)
## [,1] [,2] [,3] [,4] [,5] ## [1,] "2018-02-23" "health-study" "power-100" "group-A1" "csv"## [2,] "2018-02-23" "health-study" "power-100" "group-B1" "csv"## [3,] "2018-02-23" "health-study" "power-100" "group-C1" "csv"## [4,] "2018-02-23" "health-study" "power-200" "group-A1" "csv"## [5,] "2018-02-23" "health-study" "power-200" "group-B1" "csv"## [6,] "2018-02-23" "health-study" "power-200" "group-C1" "csv"
library(tidyverse)map_df(dir_ls("data/", regexp = "health-study"), read_csv)# ordir_ls("data/", regexp = "health-study") %>% map_df(read_csv)
_
# BaddfetuningVar# Goodhealth_dataerrortuning_var
lowercase letters + numbers = alpha-numeric characters (ish)
attach()
attach()
attach(mtcars)mean(mpg)
## [1] 20.09062
attach()
attach(mtcars)mean(mpg)
## [1] 20.09062
with()
or withr
insteadrm(list=ls())
rm(list=ls())
CTRL+SHIFT+F10
for WindowsCMD+SHIFT+ALT+F10
for Mac OSsource()
R scripts into your R Markdown document where you will do analyses, visualizations and reporting.- 01-import.R- 02-clean-names.R- 03-tidy.R- etc
- 01-import.R- 02-clean-names.R- 03-tidy.R- etc
Include at the start of R Markdown file
{r load_scripts, include = FALSE}library(here)source(here("scripts", "01-import.R"))source(here("scripts", "02-clean-names.R"))source(here("scripts", "03-tidy.R"))
```{r, chunk-label, results='hide', fig.height=4}
```{r chunk-label, results='hide', fig.height=4}
In general it is recommended to use alphabetic characters with words separated by - and avoid other characters. - Yihui Xie
Lower left corner of Rstudio have menu where sections and chunks can be selected with.
Caching on unnamed chunks are based on numbering.
```{r setup, include=FALSE}knitr::opts_chunk$set(echo = TRUE)
```{r setup, include=FALSE}knitr::opts_chunk$set(echo = TRUE)
```{r setup, include=FALSE}knitr::opts_chunk$set(fig.path = "figures/")
highlight use of fig.path option
fig.path: ('figure/'; character) prefix to be used for figure filenames (fig.path and chunk labels are concatenated to make filenames)
Give examples of styles to follow
options(stringsAsFactors = FALSE)options(max.print = 100)
# add this with usethis::use_usethis()library(usethis)
library(tidyverse)
Use it to change options and load packages
# Takes a data.frame (data) and replaces the columns with the names# (names) and converts them from factor variable to character # variables. Keeps characters variables unchanged.factor_to_text <- function(data, names) { for (i in seq_along(names)) { if(is.factor(data[, names[i], drop = TRUE])) data[, names[i]] <- as.character.factor(data[, names[i], drop = TRUE]) } data}
datapasta
and reprex
)reprex
package helps you create a reproducible exampledatapasta
lets you easy copy + paste small samples of data into RStudioreprex
)
Art by Allison Horst
RStudio has a dedicated forum for questions related to R and RStudio: https://community.rstudio.com/
Check out the questions tagged r
on Stack Overflow: https://stackoverflow.com/questions/tagged/r
#rstats
on TwitterIf you have a Twitter account, check out #rstats
: https://twitter.com/hashtag/rstats
Art by Allison Horst
Keyboard shortcuts
↑, ←, Pg Up, k | Go to previous slide |
↓, →, Pg Dn, Space, j | Go to next slide |
Home | Go to first slide |
End | Go to last slide |
Number + Return | Go to specific slide |
b / m / f | Toggle blackout / mirrored / fullscreen mode |
c | Clone slideshow |
p | Toggle presenter mode |
t | Restart the presentation timer |
?, h | Toggle this help |
Esc | Back to slideshow |