-
Notifications
You must be signed in to change notification settings - Fork 10
/
intro-to-R.qmd
193 lines (124 loc) · 7.73 KB
/
intro-to-R.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# Statistical computing in R
## Online R learning resources
There are an overwhelming number of great resources for learning R; here are some recommendations:
- [*The RStudio Education website*](https://education.rstudio.com), especially:
- [*Finding your way to R*](https://education.rstudio.com/learn/)
- *R for Epidemiology* (@r4epi)
- *The Epidemiologist R Handbook* (@epirhb)
- *R for Data Science* (@r4ds)
- *Advanced R* (@wickham2019advanced)
- *R Graphics Cookbook* (@changRgraphicscookbook)
- *R Packages* (@rpkgs)
- @NahhasIntroR (same author as @NahhasIRMPHR)
- @practicalr4epi
- @phdswR (previously @appliedepiusingR): Author is State Public Health Officer and Director, California Department of Public Health, <https://drtomasaragon.github.io/>)
- *SAS and R* (@kleinman2009sas)
* The [procs](https://cran.r-project.org/web/packages/procs/) package in R provides
versions of common SAS procedures,
such as 'proc freq', 'proc means', 'proc ttest', 'proc reg', 'proc transpose', 'proc sort', and 'proc print'
- *R for SAS and SPSS users* (@muenchen2011r)
- *Building reproducible analytical pipelines with R* (@rapR)
- *Posit Recipes: Some tasty R code snippets*: <https://posit.cloud/learn/recipes>
## UC Davis R programming courses
There are several dedicated UC Davis courses on R programming:
- [BIS 015L](https://catalog.ucdavis.edu/search/?q=BIS+015L):
Introduction to Data Science for Biologists
- see course materials at
<https://jmledford3115.github.io/datascibiol/>
- [ENV 224](https://catalog.ucdavis.edu/search/?q=ENV+224)/
[ECL 224](https://catalog.ucdavis.edu/search/?q=ECL+224):
Data Management & Visualization in R
- see course materials at
<https://ucd-cepb.github.io/R-DAVIS/>
- [ESP 106](https://catalog.ucdavis.edu/search/?q=ESP+106):
Environmental Data Science
- [STA 015B](https://statistics.ucdavis.edu/expanded-descriptions/15b): Introduction to
Statistical Data Science II
- [STA 032](https://statistics.ucdavis.edu/expanded-descriptions/32):
Gateway to Statistical Data Science
- [STA 035A](https://statistics.ucdavis.edu/expanded-descriptions/35A) -
[B](https://statistics.ucdavis.edu/expanded-descriptions/35B):
Statistical Data Science
- [STA 141A](https://statistics.ucdavis.edu/expanded-descriptions/141A): Fundamentals of
Statistical Data Science
- [STA 242](https://statistics.ucdavis.edu/expanded-descriptions/242): Introduction to Statistical Programming
- [ABG 250](https://catalog.ucdavis.edu/search/?q=ABG+250):
Mathematical Modeling in Biological Systems
[DataLab](https://datalab.ucdavis.edu/) maintains another list of courses:
<https://datalab.ucdavis.edu/courses/>
DataLab also provides short-form workshops on R programming and data science:
<https://datalab.ucdavis.edu/workshops/>
## Functions
- Read this ASAP: <https://r4ds.hadley.nz/functions.html>
- Use this as a reference: <https://adv-r.hadley.nz/functions.html>
### Methods versus functions
See <https://adv-r.hadley.nz/oo.html#oop-systems>
### Debugging R and C code
See <https://www.maths.ed.ac.uk/~swood34/RCdebug/RCdebug.html>
## `data.frame`s and `tibble`s
### Displaying `tibble`s
See `vignette("digits", package = "tibble")`
## The `tidyverse`
> The tidyverse is an opinionated collection of R packages designed for data science. All packages share an underlying design philosophy, grammar, and data structures.
- https://www.tidyverse.org/
These packages are being actively developed by [Hadley Wickham](https://hadley.nz/) and his colleagues at [posit](https://posit.co/)^[[the company formerly known as RStudio]( https://posit.co/blog/rstudio-is-becoming-posit/)].
Details:
- @welcometidyverse
- @r4ds
- @kuhn2022tidy
## Piping
See [@r4ds](https://r4ds.hadley.nz/data-transform.html#sec-the-pipe) for details.
There are currently (2024) two commonly-used pipe operators in R:
- `%>%`: the "`magrittr` pipe", from the [`magrittr`](https://cran.r-project.org/web/packages/magrittr/index.html) package (@magrittr; [re-exported](https://r-pkgs.org/dependencies-in-practice.html#re-exporting) by [`dplyr`](https://cran.r-project.org/web/packages/dplyr/index.html) and others) .
- `|>`: the "native pipe", from base R (≥4.1.0)
### Which pipe should I use?
@r4ds [recommends the native pipe](https://r4ds.hadley.nz/data-transform.html#sec-the-pipe:~:text=So%20why%20do%20we%20recommend%20the%20base%20pipe%3F):
> For simple cases, |> and %>% behave identically. So why do we recommend the base pipe? Firstly, because it’s part of base R, it’s always available for you to use, even when you’re not using the tidyverse. Secondly, |> is quite a bit simpler than %>%: in the time between the invention of %>% in 2014 and the inclusion of |> in R 4.1.0 in 2021, we gained a better understanding of the pipe. This allowed the base implementation to jettison infrequently used and less important features.
### Why doesn't `ggplot2` use piping?
Here's `tidyverse` creator Hadley Wickham's answer (from 2018):
> I think it's worth unpacking this question into a few smaller pieces:
>
> - Should ggplot2 use the pipe? IMO, yes.
> - Could ggplot2 support both the pipe and plus? No
> - Would it be worth it to create a ggplot3 that uses the pipe? No.
<https://forum.posit.co/t/why-cant-ggplot2-use/4372/7>
## Quarto
Quarto is a system for writing documents with embedded R code and/or results:
- Read this ASAP: <https://r4ds.hadley.nz/communicate>
- Then use this for reference: <https://quarto.org/docs/reference/>
## One source file, multiple outputs
One of quarto's excellent features is the ability to convert the same source file into multiple output formats;
in particular, I am using the same set of source files to generate an html website,
a pdf document, and a set of revealjs slide decks.
I use `::: notes` divs to mark text chunks to omit from the revealjs format but include in the website and pdf format.
## Packages
> This book espouses our philosophy of package development: anything that can be automated, should be automated. Do as little as possible by hand. Do as much as possible with functions. The goal is to spend your time thinking about what you want your package to do rather than thinking about the minutiae of package structure.
- https://r-pkgs.org/introduction.html#:~:text=This%20book%20espouses,of%20package%20structure.
- Read this ASAP: <https://r-pkgs.org/whole-game.html>
- Use the rest of @rpkgs as a reference
## Submitting packages to CRAN
- Read this first: <https://r-pkgs.org/release.html>
- A problems-and-solutions book is under construction: <https://contributor.r-project.org/cran-cookbook/>
## Git
94% of respondents to a
[2022 Stack Overflow survey](https://survey.stackoverflow.co/2022/#section-version-control-version-control-systems)
reported using git for version control.
[More details](https://r-pkgs.org/software-development-practices.html#sec-sw-dev-practices-git-github)
- *Happy Git with R* <https://happygitwithr.com/>
- <https://usethis.r-lib.org/articles/pr-functions.html>
- *Git Magic* <http://www-cs-students.stanford.edu/~blynn/gitmagic/>
- <https://ohshitgit.com/>
- <https://maelle.github.io/saperlipopette/>
## Spatial data science
- @spatialds
## Shiny apps
- Read @masteringshiny first
- Use @golembook as a reference
# Making the most of RStudio
Over time, explore all the tabs and menus; there are a lot of great quality-of-life features.
* use the `History` tab to view past commands; you can rerun them or copy them into a source code file in one click! (up-arrow in the Console also enables this process, but less easily).
# Contributing to R
Many modern R packages are developed on Github, and welcome
bug reports and pull requests (suggested edits to source code) through
the Github interface.
To contribute to "base R" (the core systems), see <https://contributor.r-project.org/>