-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.Rmd
214 lines (157 loc) · 4.34 KB
/
README.Rmd
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
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
---
title: "Fun things in R"
author: "Iain McLaughlan"
date: "10/2/2021"
output:
github_document:
toc: true
toc_depth: 2
# html_preview: false
---
# Quick tips
### Issues installing packages
Try
```{r options, eval=F}
options(repos = c(REPO_NAME = "https://packagemanager.rstudio.com/all/latest"))
```
This will make sure that the latest version of the package is being installed.
### Default installing packages
Don't want to rely on the user having all of the packages installed?
```{r pacman, eval=F}
if(!require("pacman")) install.packages("pacman"); library(pacman)
pacman::p_load(
ggplot2,
tidyr,
...
)
```
### Package install
Make sure that a package is installed.
```{r quick-tip, eval=F}
if(!library(<package>)){
install.packages("<package>")
library(<package>)
}
```
### Snippets
Bored of typing too much? Use [snippets](https://jozef.io/r906-rstudio-snippets/).
Go to `Tools >> Global options >> Code >> Edit snippets`. In here is a list of
snippets which can be edited to match the use case that you use it most for.
These can come up as auto complete suggestions but if not can be added by typing
the key then `Shift + Tab`.
An example
```{r snippet, eval=F}
snippet if
if($1:condition){
{2:code}
}
```
Typing `if` then `Shift + Tab` the code in the snippet will be added. Hit `Tab`
to move between editables.
### Better printing
Don't like printing having a [1] in front of it?
```{r eval=F}
cat("<string>")
```
# R project
``` {r project-setup, eval=FALSE}
# Create an R project
devtools::create(path = "./<PROJECT NAME>")
# Initialise an R environment
renv::init()
# Set up unit testing
usethis::use_testthat()
# Build package
devtools::build(path = "./")
# Setting the path = "./" will create the .tar.gz within the project dir.
# If not then specify a path to your package dir.
# Installing from .tar.gz
# In this case path_to_file = "./Project_0.0.1.tar.gz"
path_to_file = "./Project_0.0.1.tar.gz"
install.packages(path_to_file, repos = NULL, type="source")
# Adding a licence to a project
usethis::use_apache_license() # Or whatever licence you want.
```
## External dependincies
Working within `./R/` **DON'T** use `library(...)` or `require(...)`
``` {r dependincies, eval=F, class.source="bg-danger"}
# Within a packaged don't use
library(<LIBRARY NAME>)
# or
require(<LIBRARY NAME>)
```
Instead update the DESCRIPTION file with an `Imports: ` section.
``` {r imports, eval=F, class.source="bg-success"}
# Within DESCRIPTION
Imports:
ggplot2 (>= 3.3.3)
```
Adding imports in this way will install with dependencies when the package is
installed. If using this as a pretend package that isn't installed fully then
adding `library(...)` for the given dependency in the running file should work.
## Roxygen - documentation
In a working file use Ctrl + Alt + Shift + R to add a Roxygen documentation template.
``` {r roxygen, eval=F}
# With roxygen comments on functions within ./R create a manual
devtools::document()
```
## Testing
### Testthat - unit testing
``` {r testthat, eval=F}
# Create testing file structure
usethis::use_testthat()
# Create tests for the current working file
usethis::use_test() # Adds a test file in ./tests/testthat/test-<FILE NAME>.R
# Run all tests
devtools::test()
```
### Covr - test coverage
Test coverage.
# Renv - library environments
```{r renv, eval = F}
# Creating an R environment
renv::init()
# Taking a snapshot of the current dependencies and store in renv.lock.
renv::snapshot()
# Load back to the last snapshot
renv::restore()
```
# Git
Supper basic just covering the most commonly used commands.
Create a git repo
```{r eval=FALSE}
git init
```
Add files, commit and push to remote repo (like github or another file store).
```{r eval=FALSE}
git add .
git commit -m "<SHORT DESCRIPTION"> -m "<LONGER DESCRIPTION>(optional)"
git push <REMOTE NAME> <BRANCH NAME>
# example
git push origin master
```
Checkout new branch and add to remote.
```{r eval=F}
git branch <NEW BRANCH NAME>
```
or
```{r eval=F}
git checkout -b <NEW BRANCH NAME>
git push --set-upstream <remote> <branch>
# example
git push --set-upstream origin master
# If branch is already tracked on remote
git push
```
Pull data from remote
```{r eval=F}
git pull <remote> <branch>
#example
git pull origin master
# If on branch
git pull
```
General info
```{r eval=F}
git status
```