From 34ed94417592e921ebea011b97cfd41676337497 Mon Sep 17 00:00:00 2001 From: Nicolas Casajus Date: Thu, 21 Nov 2024 12:06:29 +0100 Subject: [PATCH 1/2] update styles --- styles.scss | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/styles.scss b/styles.scss index 600da17..914ac03 100644 --- a/styles.scss +++ b/styles.scss @@ -6,6 +6,10 @@ $font-family-monospace: "Fira Code", monospace !default; /*-- scss:rules --*/ +main ul li { + font-family: Georgia,Cambria,"Times New Roman",Times,serif !important; +} + .bouton { margin-left: 1%; margin-right: 1%; @@ -24,3 +28,7 @@ a.bouton:hover { color: white; text-decoration: none; } + +.small { + font-size: 0.8em; +} From dd1ce3994e193d88a80951c36a64cd6a778d1a7d Mon Sep 17 00:00:00 2001 From: Nicolas Casajus Date: Mon, 25 Nov 2024 06:59:34 +0100 Subject: [PATCH 2/2] new post: research compendium - fix #29 --- .../2024-09-24-research-compendium.qmd | 1237 +++++++++++++++++ .../rstudio-project.png | Bin 0 -> 66150 bytes 2 files changed, 1237 insertions(+) create mode 100644 posts/2024-09-24-research-compendium/2024-09-24-research-compendium.qmd create mode 100644 posts/2024-09-24-research-compendium/rstudio-project.png diff --git a/posts/2024-09-24-research-compendium/2024-09-24-research-compendium.qmd b/posts/2024-09-24-research-compendium/2024-09-24-research-compendium.qmd new file mode 100644 index 0000000..ca1d9f1 --- /dev/null +++ b/posts/2024-09-24-research-compendium/2024-09-24-research-compendium.qmd @@ -0,0 +1,1237 @@ +--- +title: "Research compendium" +author: "Nicolas Casajus" +date: "2024-09-24" +categories: [r, compendium, project, description-file, reproducibility, documentation] +image: "" +toc: true +draft: false +lightbox: true +code-overflow: scroll +--- + + +This post explains how to work with a **research compendium**. The goal of a research compendium is to provide a standard and easily recognizable way for **_organizing the digital materials_** of a project to enable others to inspect, reproduce, and extend the research (Marwick B _et al._ 2018). A research compendium follows three general principles: + +- Files are **organized** according to the conventions of the community +- Data, method, and output are clearly **separated** +- **Computational environment** that was used is specified + +> In other words, a research compendium is a simple way to organize files by separating the data, the code, and the results, while also documenting the computational environment. + +
+ +::: {.small} +{{< fa hand-point-right >}}  This post is derived from the [exercise](https://rdatatoolbox.github.io/chapters/ex-compendium.html) proposed as part of the training course [Reproducible Research in Computational Ecology](https://rdatatoolbox.github.io/). +::: + +
+ +## Foreward + +In order to assist us in creating the structure of our working directory, we will use the {{< fa brands r-project >}} [`rcompendium`](https://github.com/frbcesab/rcompendium) package, developed by the author of this post. This package allows for the automation of creating files and directories specific to a research compendium (and a {{< fa brands r-project >}} package). + +The package is released on the [CRAN](https://cran.r-project.org/web/packages/rcompendium/index.html) but we will install the development version from [GitHub](https://github.com/frbcesab/rcompendium): + +```{r} +#| echo: true +#| eval: false + +## Install 'remotes' package ---- +install.packages("remotes") + +## Install 'rcompendium' package from GitHub ---- +remotes::install_github("frbcesab/rcompendium") + +## Attach 'rcompendium' package ----- +library("rcompendium") +``` + +{{< fa lightbulb >}}  If you encounter difficulties installing the package, please carefully read the **Installation** section of the [README](https://github.com/frbcesab/rcompendium?tab=readme-ov-file#installation). + +Once the package is installed, you need to run the [`set_credentials()`](https://frbcesab.github.io/rcompendium/reference/set_credentials.html) function to store your personal information locally (first name, last name, email, ORCID, communication protocol with GitHub). This information will automatically populate certain files in the compendium. **This function should only be used once**. + +```{r} +#| echo: true +#| eval: false + +## Store personal information ---- +set_credentials(given = "Jane", + family = "Doe", + email = "jane.doe@mail.me", + orcid = "0000-0000-0000-0000", + protocol = "ssh") +``` + +This information has been copied to the clipboard. Paste its content into the file `~/.Rprofile` (opened in RStudio using this function). This file is read every time {{< fa brands r-project >}} is opened, and its content will be accessible to the [`rcompendium`](https://github.com/frbcesab/rcompendium) package. + +Restart the {{< fa brands r-project >}} session (**_Session > Restart R_**) and verify that your personal information is correctly accessible. + +```{r} +#| echo: true +#| eval: false + +## Retrieve email ---- +getOption("email") +# [1] "jane.doe@mail.me" + +## Retrieve family name ---- +getOption("family") +# [1] "Doe" +``` + + +
+ +## RStudio project + +When you start a new project in {{< fa brands r-project >}} it is [strongly recommended](https://support.posit.co/hc/en-us/articles/200526207-Using-RStudio-Projects) to use **RStudio Projects**. + +{{< fa hand-point-right >}}  Create a new RStudio Project: **_File > New Project > New Directory > New Project_** and proceed as follow: + +- choose a name for your project (short and without whitespace) +- select the location where the new project will be created +- uncheck all other boxes +- confirm + +![](rstudio-project.png){fig-align='center' width=50%} + + +::: {.callout-tip} +## Good practice #1 + +Always work within an **RStudio project**. This has the advantage of simplifying file paths, especially with the [`here`](https://here.r-lib.org/) package and its [`here()`](https://here.r-lib.org/reference/here.html) function. The paths will always be constructed relative to the folder containing the `.Rproj` file (the project root). This is called a **_relative path_**. + +{{< fa hand-point-right >}}  **Never use** the [`setwd()`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/getwd) function again. +::: + + +::: {.callout-note} +## To go further + +If you share your project on a cloud-based git repository (e.g. [GitHub](https://github.com), [GitLab](https://github.com), etc.) to collaborate, we recommend to add the `.Rproj` file to the `.gitignore`. The content of this `.Rproj` file can change between RStudio versions leading to unnecessary `git` conflicts. Listing the `.Rproj` file in the `.gitignore` will ensure that each user is working locally with its own version of this file. +::: + + +::: {.small} +{{< fa folder >}}  **Research compendium at this stage** + +``` +practice/ # Root of the compendium +| +└─ practice.Rproj # RStudio project file +``` +::: + +
+ + +## README + +Every project must contain a **README** file. It is the **showcase of the project**. The roles of a **README** are multiple: + +- Describe the project +- Explain its contents +- Explain how to install it +- Explain how to use it + +It is a simple text file (_plain text-based file_) that can be written in plain text (`README.txt`), in simple Markdown (`README.md`), in R Markdown (`README.Rmd`), in Quarto (`README.qmd`), etc. + +{{< fa hand-point-right >}}  Here, you will create a `README.md` (simple [**Markdown**](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax)) at the root of your project. + +{{< fa lightbulb >}}  Use the [`utils::file.edit()`](https://rdrr.io/r/utils/file.edit.html) function, which allows you to open a file in the RStudio editor. If the file doesn't exist, it will also create it. + + +```{r} +#| echo: true +#| eval: false + +## Add a README ---- +utils::file.edit(here::here("README.md")) +``` + + +{{< fa hand-point-right >}}  Run this line of code in the console: `here::here("README.md")` and try to understand what the [`here::here()`](https://here.r-lib.org/reference/here.html) function does. + +{{< fa hand-point-right >}}  Edit this `README.md` by adding the information that you find relevant. + +**Suggestion**  {{< fa caret-down >}} + +::: {.small} + +```{txt} +#| code-fold: false + +# Practice + +This project contains files to create a simple **research compendium** as +presented in the training course +[Reproducible Research in Computational Ecology](https://rdatatoolbox.github.io). + + +## Content + +This project is structured as follow: + +- `README.md`: presentation of the project +- `practice.Rproj`: RStudio project file + + +## Installation + +Coming soon... + + +## Usage + +Coming soon... + + +## Citation + +> Doe J (2024) Minimal structure of a research compendium. +``` + +::: + + +::: {.callout-tip} +## Good practice #2 + +Always add a **README** to help the user understand your project. If you want to execute {{< fa brands r-project >}} code inside, write it in [**R Markdown**](https://rmarkdown.rstudio.com/) (`README.Rmd`) or [**Quarto**](https://quarto.org/) (`README.qmd`), otherwise, simply use [**basic Markdown**](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax) (`README.md`). + +**NB.** If you write a `.Rmd` or `.qmd`, don't forget to convert it into a `.md` file. GitHub can only interpret basic Markdown. + +```{r} +#| echo: true +#| eval: false + +## Convert .Rmd in .md ---- +rmarkdown::render("README.Rmd") + +## Convert .qmd in .md ---- +quarto::quarto_render("README.qmd") +``` + +{{< fa lightbulb >}}  You can also click on the **_Render_** button of RStudio. +::: + + +::: {.callout-note} +## The [`rcompendium::add_readme_rmd()`](https://frbcesab.github.io/rcompendium/reference/add_readme_rmd.html) function + +You can use the [`add_readme_rmd()`](https://frbcesab.github.io/rcompendium/reference/add_readme_rmd.html) function of [`rcompendium`](https://github.com/frbcesab/rcompendium) package that populates a **README** template for {{< fa brands r-project >}} projects. +::: + + +::: {.small} +{{< fa folder >}}  **Research compendium at this stage** + +``` +practice/ # Root of the compendium +| +├─ practice.Rproj # RStudio project file +| +└─ README.md # Presentation of the project +``` +::: + + +
+ + +## DESCRIPTION + +The **DESCRIPTION** file describes the metadata of the project (title, author, description, dependencies, etc.). It is one of the essential elements of a {{< fa brands r-project >}} package. Here, we will repurpose it for use in a research compendium in order to take advantage of package development tools (see below). + +{{< fa hand-point-right >}}  Add a **DESCRIPTION** file using the [`add_description()`](https://frbcesab.github.io/rcompendium/reference/add_description.html) function of the [`rcompendium`](https://github.com/frbcesab/rcompendium) package. + +```{r} +#| echo: true +#| eval: false + +## Add a DESCRIPTION file ---- +rcompendium::add_description() +``` + +::: {.small} + +``` +Package: practice +Type: Package +Title: The Title of the Project +Version: 0.0.0.9000 +Authors@R: c( + person(given = "Jane", + family = "Doe", + role = c("aut", "cre", "cph"), + email = "jane.doe@mail.me", + comment = c(ORCID = "0000-0000-0000-0000"))) +Description: A paragraph providing a full description of the project (on + several lines...) +License: {{license}} +Encoding: UTF-8 +``` +::: + +As you can see, the **DESCRIPTION** file has been pre-filled with your personal information. You will edit the **_Title_** and **_Description_** fields later. + + +::: {.callout-tip} +## Good practice #3 + +Always add a **DESCRIPTION** file at the root of the project. It is used to describe the **project's metadata**: title, author(s), description, license, etc. We will discuss this later, but it is also the ideal place to **list required external packages**. +::: + + + +::: {.small} +{{< fa folder >}}  **Research compendium at this stage** + +``` +practice/ # Root of the compendium +| +├─ practice.Rproj # RStudio project file +| +├─ README.md # Presentation of the project +└─ DESCRIPTION # Project metadata +``` +::: + + +
+ + +## LICENSE + +Any material shared online must have a **LICENSE** that describes what can be done with it. Therefore, we recommend adding a license to your project **from the start**. To determine which license is most appropriate for your project, you can visit this website: . + +{{< fa hand-point-right >}}  Add the [GPL-3](https://choosealicense.com/licenses/gpl-3.0/) license to your project using the [`add_license()`](https://frbcesab.github.io/rcompendium/reference/add_license.html) function of the [`rcompendium`](https://github.com/frbcesab/rcompendium) package. + +```{r} +#| echo: true +#| eval: false + +## Add a license ---- +add_license(license = "GPL-3") +``` + +Note that a new file has been created: `LICENSE.md`. This file details the contents of the license and will be read by GitHub. Also, check the content of the **DESCRIPTION** file: the **_License_** section has been updated thanks to [`rcompendium`](https://github.com/frbcesab/rcompendium). + +{{< fa hand-point-right >}}  Add a section in the `README.md` mentioning the license. + +**Suggestion**  {{< fa caret-down >}} + +::: {.small} + +```{txt} +#| code-fold: false + +# Practice + +This project contains files to create a simple **research compendium** as +presented in the training course +[Reproducible Research in Computational Ecology](https://rdatatoolbox.github.io). + + +## Content + +This project is structured as follow: + +- `README.md`: presentation of the project +- `DESCRIPTION`: project metadata +- `LICENSE.md`: license of the project +- `practice.Rproj`: RStudio project file + + +## Installation + +Coming soon... + + +## Usage + +Coming soon... + + +## License + +This project is released under the +[GPL-3](https://choosealicense.com/licenses/gpl-3.0/) license. + + +## Citation + +> Doe J (2024) Minimal structure of a research compendium. +``` +::: + + +::: {.callout-tip} +## Good practice #4 + +Always add a **LICENSE** to a project that will be made public. Visit the [Choose a License](https://choosealicense.com/appendix/) website to select the most appropriate one for your project. + +**Note:** If no license is provided, your project will be subject to the [No License](https://choosealicense.com/no-permission/) rules: no permissions are granted. In other words, no one can do anything with your project (no reuse, no modification, no sharing, etc.). +::: + + + +::: {.small} +{{< fa folder >}}  **Research compendium at this stage** + +``` +practice/ # Root of the compendium +| +├─ practice.Rproj # RStudio project file +| +├─ README.md # Presentation of the project +├─ DESCRIPTION # Project metadata +└─ LICENSE.md # License of the project +``` +::: + + +
+ +## Subdirectories + +The next step involves creating **subdirectories**, each with a specific role. The idea here is to separate the data, results, and code. + + +{{< fa hand-point-right >}}  To do this, use the [`add_compendium()`](https://frbcesab.github.io/rcompendium/reference/add_compendium.html) function from [`rcompendium`](https://github.com/frbcesab/rcompendium). + + +```{r} +#| echo: true +#| eval: false + +## Create subdirectories ---- +rcompendium::add_compendium() +``` + +::: {.callout-tip} +## Good practice #5 + +A good Research compendium will consist of **different subdirectories**, each intended to hold a specific type of file. By default, the [`add_compendium()`](https://frbcesab.github.io/rcompendium/reference/add_compendium.html) function will create this organization: + +- The `data/` folder will contain all the raw data necessary for the project. +- The `outputs/` folder will contain all the generated results (excluding figures). +- The `figures/` folder will contain all the figures produced by the analyses. +- The `R/` folder will only contain {{< fa brands r-project >}} functions (and their documentation). See below for more details. +- The `analyses/` folder will contain {{< fa brands r-project >}} scripts (or `.Rmd` and/or `.qmd` files) that will call the functions. + +**Note:** This structure can of course be adapted based on needs, personal practices, and the complexity of the project. With the exception of the **`R/`** folder, all other directories can be named differently. +::: + + +::: {.small} +{{< fa folder >}}  **Research compendium at this stage** + +``` +practice/ # Root of the compendium +| +├─ practice.Rproj # RStudio project file +| +├─ README.md # Presentation of the project +├─ DESCRIPTION # Project metadata +├─ LICENSE.md # License of the project +| +├─ data/ # Contains raw data +├─ outputs/ # Contains results +├─ figures/ # Contains figures +├─ R/ # Contains R functions (only) +└─ analyses/ # Contains R scripts +``` +::: + + +
+ + +## Writing code + +We're ready to code! + +> Here we will write a code that will download the [PanTHERIA](https://doi.org/10.1890/08-1494.1) dataset (Jones et al. 2009) and save it locally in our compendium. + +**PanTHERIA** is a species-level database of life history, ecology, and geography of extant and recently extinct mammals. Metadata can be found [here](https://esapubs.org/archive/ecol/E090/184/metadata.htm). Note that missing values are coded `-999`. + +We'll start by writing our code in a {{< fa brands r-project >}} **script**. The PanTHERIA data file, available [here](https://esapubs.org/archive/ecol/E090/184/PanTHERIA_1-0_WR05_Aug2008.txt), will be saved in the **data/pantheria/** subdirectory. + + +{{< fa hand-point-right >}}  Create the `download-data.R` script in the **analyses/** directory using the [`utils::file.edit()`](https://rdrr.io/r/utils/file.edit.html) function. + + +```{r} +#| echo: true +#| eval: false + +## Create a R script in the directory analyses/ ---- +utils::file.edit(here::here("analyses", "download-data.R")) +``` + +{{< fa hand-point-right >}}  Now write the code to download the data file. + +{{< fa lightbulb >}}  Use [`dir.create()`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/files2) to create the subdirectory **data/pantheria/**, [`here::here()`](https://here.r-lib.org/reference/here.html) to build robust paths and [`utils::download.file()`](https://www.rdocumentation.org/packages/utils/versions/3.6.2/topics/download.file) to download the file from the URL. + + +**Suggestion**  {{< fa caret-down >}} + +::: {.small} + +```{r} +#| echo: true +#| eval: false +#| code-fold: false + +# Download PanTHERIA dataset +# +# Author: Jane Doe +# Date: 2024/09/24 + +## Destination path ---- +path <- here::here("data", "pantheria") + +## Create destination directory ---- +dir.create(path, showWarnings = FALSE, recursive = TRUE) + +## File name ---- +filename <- "PanTHERIA_1-0_WR05_Aug2008.txt" + +## Repo base URL ---- +base_url <- "https://esapubs.org/archive/ecol/E090/184/" + +## Build full URL ---- +full_url <- paste0(base_url, filename) + +## Build full path ---- +dest_file <- file.path(path, filename) + +## Download file ---- +utils::download.file(url = full_url, + destfile = dest_file, + mode = "wb") +``` +::: + + +::: {.callout-tip} +## Good practice #6 + +Try **scripting the whole project** (including data acquisition). Here, we've seen how to create files ([`utils::file.edit()`](https://rdrr.io/r/utils/file.edit.html)) and directories ([`dir.create()`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/files2)), build robust relative paths ([`here::here()`](https://here.r-lib.org/reference/here.html)) and download files ([`utils::download.file()`](https://www.rdocumentation.org/packages/utils/versions/3.6.2/topics/download.file)) directly from {{< fa brands r-project >}}. +::: + + +::: {.callout-note} +## External packages + +To use a function from an external package, you've learned to use `library(pkg)`. In {{< fa brands r-project >}}, there's another syntax for calling a function from an external package: `pkg::fun()`. Whereas `library()` **loads and attaches** a package (making its functions directly accessible with `fun()`), the syntax `pkg::fun()` **only loads** a package in the session, but does not attach its contents. This means you have to specify the package name when calling the function. + +We recommend using the `pkg::fun()` syntax. There are two reasons for this: + +- **A better code readability**: at a glance, you'll know which package the function is in. +- **Limits conflicts between packages**: two functions can have the same name in two different packages. For example, the `dplyr` package offers a `filter()` function which is also found in the `stats` package (attached to the opening of {{< fa brands r-project >}}). However, the `filter()` functions in these two packages do not do the same thing. + + +```{r} +#| echo: true +#| eval: false + +library("dplyr") + +## Attaching package: ‘dplyr’ +## +## The following objects are masked from ‘package:stats’: +## +## filter, lag +## +## The following objects are masked from ‘package:base’: +## +## intersect, setdiff, setequal, union + +``` + +If you use `library(dplyr)`, you'll never be 100% sure whether you're using the `filter()` function of the `dplyr` package or that of the `stats` package. + +However, for very verbose packages (such as `ggplot2`), you can use the `library()` function, otherwise your code will quickly become tedious to write. + +{{< fa lightbulb >}}  If you wish to use the `%>%` pipe, attach the `magrittr` package with `library(magrittr)`. +::: + + +::: {.small} +{{< fa folder >}}  **Research compendium at this stage** + +``` +practice/ # Root of the compendium +| +├─ practice.Rproj # RStudio project file +| +├─ README.md # Presentation of the project +├─ DESCRIPTION # Project metadata +├─ LICENSE.md # License of the project +| +├─ data/ # Contains raw data +| └─ pantheria/ # PanTHERIA database +| └─ PanTHERIA_1-0_WR05_Aug2008.txt +| +├─ outputs/ # Contains results +├─ figures/ # Contains figures +├─ R/ # Contains R functions (only) +| +└─ analyses/ # Contains R scripts + └─ download-data.R # Script to download raw data +``` +::: + + + + +
+ +## Code refactoring + +We can take this a step further by converting the script into **function**: this is known as **code refactoring**. A [**function**](https://r4ds.hadley.nz/functions.html) is a set of lines of code grouped together in a single block to perform a specific task. Writing functions will make your code **clearer** and more easily **reusable** between projects. + + +::: {.callout-important} +## Convention + +Always store your {{< fa brands r-project >}} **functions** (and only functions) in a directory named **`R/`** located at the **root of the project**. +::: + + +{{< fa hand-point-right >}}  Convert the previous {{< fa brands r-project >}} code into a function named `dl_pantheria_data()`. + +{{< fa lightbulb >}}  Use the [`usethis::use_r()`](https://usethis.r-lib.org/reference/use_r.html) function to create the function file inside the **R/** directory. + + + +```{r} +#| echo: true +#| eval: false + +## Create the function file in R/ ---- +usethis::use_r("dl_pantheria_data") +``` + +**Suggestion**  {{< fa caret-down >}} + +::: {.small} + +```{r} +#| echo: true +#| eval: false +#| code-fold: false + +dl_pantheria_data <- function() { + + ## Destination path ---- + path <- here::here("data", "pantheria") + + ## Create destination directory ---- + dir.create(path, showWarnings = FALSE, recursive = TRUE) + + ## File name ---- + filename <- "PanTHERIA_1-0_WR05_Aug2008.txt" + + ## Repo base URL ---- + url <- "https://esapubs.org/archive/ecol/E090/184/" + + ## Build full URL ---- + full_url <- paste0(base_url, filename) + + ## Build full path ---- + dest_file <- file.path(path, filename) + + ## Download file ---- + utils::download.file(url = full_url, + destfile = dest_file, + mode = "wb") + + return(dest_file) +} +``` +::: + + + +::: {.callout-tip} +## Good practice #7 + +**Write functions**: this is called _code refactoring_. This will make your **code clearer** and **easier to reuse**. Always store your {{< fa brands r-project >}} functions in the **R/** folder. If you're using functions from external packages, write them as follows: `pkg::fun()`. +::: + + +{{< fa hand-point-right >}}  Finally adapt the content of the `analyses/download-data.R` {{< fa brands r-project >}} script created earlier so that it calls the `dl_pantheria_data()` function. + + +**Suggestion**  {{< fa caret-down >}} + +::: {.small} +```{r} +#| echo: true +#| eval: false +#| code-fold: false + +# Download project raw data +# +# This script will download the PanTHERIA dataset and will store it in `data/` +# by calling the dl_pantheria_data() function available in the `R/` directory. +# +# Author: Jane Doe +# Date: 2024/09/24 + +## Download PanTHERIA dataset ---- +pantheria_path <- dl_pantheria_data() +``` +::: + + +::: {.callout-tip} +## Good practice #8 + +The **analyses/** directory contains {{< fa brands r-project >}} scripts that call {{< fa brands r-project >}} functions stored in the **R/** folder. In the case of complex analyses, don't hesitate to multiply the scripts (rather than having a single large script). + +```{mermaid} +%%{init:{'theme':'neutral','flowchart':{'htmlLabels':false}}}%% +flowchart LR + B("analyses/download-data.R") + B --> C("dl_pantheria_data()") +``` + +::: + + + +::: {.small} +{{< fa folder >}}  **Research compendium at this stage** + +``` +practice/ # Root of the compendium +| +├─ practice.Rproj # RStudio project file +| +├─ README.md # Presentation of the project +├─ DESCRIPTION # Project metadata +├─ LICENSE.md # License of the project +| +├─ data/ # Contains raw data +| └─ pantheria/ # PanTHERIA database +| └─ PanTHERIA_1-0_WR05_Aug2008.txt +| +├─ outputs/ # Contains results +├─ figures/ # Contains figures +| +├─ R/ # Contains R functions (only) +| └─ dl_pantheria_data.R # Function to download PanTHERIA data +| +└─ analyses/ # Contains R scripts + └─ download-data.R # Script to download raw data +``` +::: + + +
+ +## Documentation + +It's time to **document** your function. **It's essential!** To do this, we're going to use the [`roxygen2`](https://roxygen2.r-lib.org/articles/roxygen2.html) syntax. This makes it easy to document functions by placing a **special header before the function**. This header must contain (as a minimum) a title, a description of each argument and the function's return. + +{{< fa hand-point-right >}}  Add a [`roxygen2`](https://roxygen2.r-lib.org/articles/roxygen2.html) header to your function to document it. + + +**Suggestion**  {{< fa caret-down >}} + +::: {.small} + +```{r} +#| echo: true +#| eval: false +#| code-fold: false + +#' Download PanTHERIA dataset +#' +#' @description +#' This function downloads the PanTHERIA dataset (text file) available at +#' . +#' +#' The file `PanTHERIA_1-0_WR05_Aug2008.txt` will be stored in +#' `data/pantheria/`. Note that this folder will be created if required. +#' +#' @return This function returns the path (`character`) to the downloaded file +#' (e.g. `data/pantheria/PanTHERIA_1-0_WR05_Aug2008.txt`). + +dl_pantheria_data <- function() { ... } +``` +::: + + +{{< fa lightbulb >}}  Our function does not contain any parameter. But if this were the case, we would have had to describe the parameters with the [`roxygen2`](https://roxygen2.r-lib.org/articles/roxygen2.html) tag `#' @param`. + + +::: {.callout-tip} +## Good practice #9 + +Think of others (and of your future self)! **Always document** your code. Code without documentation is useless. Use **roxygen2** headers to document your {{< fa brands r-project >}} functions, simple comments to document code and `README` for everything else. +::: + + +::: {.callout-note} +## To go further + +You can convert your **roxygen2** headers into `.Rd` files, the only files accepted by {{< fa brands r-project >}} for documenting functions. These `.Rd` files will be stored in the **man/** folder. This is not mandatory when working with a research compendium but this is required if you develop a {{< fa brands r-project >}} package. + +```{r} +#| echo: true +#| eval: false + +## Generate function documentation (.Rd files) ---- +devtools::document() +``` + +Help for your function will be available via `?fun_name`. +::: + + +::: {.small} +{{< fa folder >}}  **Research compendium at this stage** (same as before) + +``` +practice/ # Root of the compendium +| +├─ practice.Rproj # RStudio project file +| +├─ README.md # Presentation of the project +├─ DESCRIPTION # Project metadata +├─ LICENSE.md # License of the project +| +├─ data/ # Contains raw data +| └─ pantheria/ # PanTHERIA database +| └─ PanTHERIA_1-0_WR05_Aug2008.txt +| +├─ outputs/ # Contains results +├─ figures/ # Contains figures +| +├─ R/ # Contains R functions (only) +| └─ dl_pantheria_data.R # Function to download PanTHERIA data +| +└─ analyses/ # Contains R scripts + └─ download-data.R # Script to download raw data +``` +::: + + +
+ + + +## Dependencies + +Our project depends on two external packages: [`utils`](https://www.rdocumentation.org/packages/utils/versions/3.6.2) and [`here`](https://here.r-lib.org/). As mentioned previously, the **DESCRIPTION** file is the ideal place to centralize the list of **required packages**. + + +{{< fa hand-point-right >}}  Add these two dependencies to the DESCRIPTION file with the [`usethis::use_package()`](https://usethis.r-lib.org/reference/use_package.html) function. + +```{r} +#| echo: true +#| eval: false + +## Add dependencies in DESCRIPTION ---- +usethis::use_package(package = "here") +usethis::use_package(package = "utils") +``` + +Look at the contents of the **DESCRIPTION** file: the two required packages are listed in the **_Imports_** section. + + + +::: {.small} + +``` +Package: practice +Type: Package +Title: The Title of the Project +Version: 0.0.0.9000 +Authors@R: c( + person(given = "Jane", + family = "Doe", + role = c("aut", "cre", "cph"), + email = "jane.doe@mail.me", + comment = c(ORCID = "0000-0000-0000-0000"))) +Description: A paragraph providing a full description of the project (on + several lines...) +License: GPL-3 +Encoding: UTF-8 +Imports: + here, + utils +``` +::: + + +::: {.callout-tip} +## Good practice #10 + +Always list the **required packages in the DESCRIPTION** file. In this way, you will centralize the list of required packages in one place and use the [`devtools::install_deps()`](https://remotes.r-lib.org/reference/install_deps.html) and [`devtools::load_all()`](https://www.rdocumentation.org/packages/devtools/versions/2.4.5/topics/load_all) functions (see section [Loading the project](#loading-the-project)). +::: + + +::: {.callout-note} +## To go further + +If in your {{< fa brands r-project >}} code you want to attach your packages with `library()`, use the [`usethis::use_package()`](https://usethis.r-lib.org/reference/use_package.html) function as follows: + +```{r} +#| echo: true +#| eval: false + +## Create a strong dependency ---- +usethis::use_package(package = "ggplot2", type = "Depends") +``` + +The package will be added to the **_Depends_** section of the **DESCRIPTION** file. +::: + + +
+ + + +## Loading the project + +Now that our compendium contains a **DESCRIPTION** file with a list of packages, we can use the package development tools {{< fa brands r-project >}} available in the package [`devtools`](https://devtools.r-lib.org/) to: + +**1) Install packages** with the [`devtools::install_deps()`](https://devtools.r-lib.org/reference/install_deps.html) function + +This function reads the **DESCRIPTION** file to retrieve packages listed in the **_Depends_** and **_Imports_** sections and install them (only if they are not already installed). This function therefore replaces the [`install.packages()`](https://www.rdocumentation.org/packages/utils/versions/3.6.2/topics/install.packages) function. + +{{< fa lightbulb >}}  By default, this function will also ask you to update packages (if a new version is available). If you wish to disable this feature, add the argument `upgrade = "never"`. + + +**2) Load packages** with the [`devtools::load_all()`](https://www.rdocumentation.org/packages/devtools/versions/2.4.5/topics/load_all) function + +This function will read the **DESCRIPTION** file to retrieve packages listed in the **_Depends_** and **_Imports_** sections. It will **load** the packages listed in the **_Imports_** section and **load and attach** the packages listed in the **_Depends_** section. +This function therefore replaces the [`library()`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/library) function. + + +::: {.callout-important} +## Important + +Update your **DESCRIPTION** file regularly by: + +- adding any new packages you use +- removing packages you no longer use +::: + + +**3) Load functions {{< fa brands r-project >}}**  with the [`devtools::load_all()`](https://www.rdocumentation.org/packages/devtools/versions/2.4.5/topics/load_all) function + + +The [`devtools::load_all()`](https://www.rdocumentation.org/packages/devtools/versions/2.4.5/topics/load_all) function has a second advantage: it will load {{< fa brands r-project >}} functions stored in the **R/** folder and make them accessible in the session. It therefore replaces the [`source()`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/source) function. + + +{{< fa warning >}}  After each modification to a {{< fa brands r-project >}} function, don't forget to execute the [`devtools::load_all()`](https://www.rdocumentation.org/packages/devtools/versions/2.4.5/topics/load_all) function. You can use the keyboard shortcut `Ctrl + Shift + L` in RStudio. + + +{{< fa hand-point-right >}}  Try these two functions. + + +```{r} +#| echo: true +#| eval: false + +## Install required packages ---- +devtools::install_deps(upgrade = "never") + +## Load packages and functions ---- +devtools::load_all() +``` + + +::: {.callout-tip} +## Good practice #11 + +With a **DESCRIPTION** file (listing the required packages) and a **R/** folder, you can use: + +- [`devtools::install_deps()`](https://devtools.r-lib.org/reference/install_deps.html) to install (and update) packages: don't use `install.packages()` anymore. +- [`devtools::load_all()`](https://www.rdocumentation.org/packages/devtools/versions/2.4.5/topics/load_all) to 1) load (and attach) packages and 2) load your {{< fa brands r-project >}} functions: no longer use `library()` or `source()` (to load your functions). +::: + + +
+ + + +## Main script + +To automate our project, we'll create a main {{< fa brands r-project >}} script at the root of the project. By convention, we'll call it **make.R**. It will have two objectives: + +- **set up the project** by installing and loading packages and functions +- **run the project** by sourcing scripts {{< fa brands r-project >}} sequentially. + +The idea is that, once the project is finished, the user only executes this script: it's the **conductor** of the project. + +{{< fa hand-point-right >}}  Use the [`utils::file.edit()`](https://rdrr.io/r/utils/file.edit.html) function to create a {{< fa brands r-project >}} script at the root of the project. + + +```{r} +#| echo: true +#| eval: false + +## Create a main script ---- +utils::file.edit(here::here("make.R")) +``` + + +{{< fa hand-point-right >}}  Add the two previous functions: + +::: {.small} +```{r} +#| echo: true +#| eval: false + +# Setup project ---- + +## Install packages ---- +devtools::install_deps(upgrade = "never") + +## Load packages & functions ---- +devtools::load_all() +``` +::: + + +{{< fa hand-point-right >}}  Finally, add a line to the **make.R** file that will execute the **analyses/download-data.R** script. + +{{< fa lightbulb >}}  Use the [`source()`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/source) and [`here::here()`](https://here.r-lib.org/reference/here.html) functions to do this. + + + +**Suggestion**  {{< fa caret-down >}} + +::: {.small} +```{r} +#| echo: true +#| eval: false +#| code-fold: false + +# Project title +# +# Project description +# ... +# +# Author: Jane Doe +# Date: 2024/12/02 + + +# Setup project ---- + +## Install packages ---- +devtools::install_deps(upgrade = "never") + +## Load packages & functions ---- +devtools::load_all() + + +# Run project ---- + +## Download raw data ---- +source(here::here("analyses", "download-data.R")) +``` +::: + + +::: {.callout-tip} +## Good practice #12 + +A **make.R** file placed at the root of the project makes it easy to set up the project (install and load the required packages and {{< fa brands r-project >}} functions) and run the various analyses sequentially (by sourcing {{< fa brands r-project >}} scripts which themselves call {{< fa brands r-project >}} functions). This is the **conductor** of the project. + +**Note:** Given the simplicity of this project, we could easily have placed the contents of the {{< fa brands r-project >}} script (**analyses/download-data.R**) in this **make.R**. The structure of a compendium is not fixed, but we recommend that you use at least {{< fa brands r-project >}} functions and a **make.R**. + +```{mermaid} +%%{init:{'theme':'neutral','flowchart':{'htmlLabels':false}}}%% +flowchart LR + A("make.R") --> B("analyses/download-data.R") + B --> C("dl_pantheria_data()") +``` +::: + + + +::: {.small} +{{< fa folder >}}  **Research compendium at the end** + +``` +practice/ # Root of the compendium +| +├─ practice.Rproj # RStudio project file +| +├─ README.md # Presentation of the project +├─ DESCRIPTION # Project metadata +├─ LICENSE.md # License of the project +| +├─ data/ # Contains raw data +| └─ pantheria/ # PanTHERIA database +| └─ PanTHERIA_1-0_WR05_Aug2008.txt +| +├─ outputs/ # Contains results +├─ figures/ # Contains figures +| +├─ R/ # Contains R functions (only) +| └─ dl_pantheria_data.R # Function to download PanTHERIA data +| +├─ analyses/ # Contains R scripts +| └─ download-data.R # Script to download raw data +| +└─ make.R # Script to setup & run the project +``` +::: + + + + +
+ + + +## Documentation (again) + +Don't forget to finalize your project documentation. + +{{< fa hand-point-right >}}  Edit the **_Title_** and **_Description_** sections of the **DESCRIPTION** file. + +::: {.small} +``` +Package: practice +Type: Package +Title: Download PanTHERIA database +Version: 0.0.0.9000 +Authors@R: c( + person(given = "Jane", + family = "Doe", + role = c("aut", "cre", "cph"), + email = "jane.doe@mail.me", + comment = c(ORCID = "0000-0000-0000-0000"))) +Description: This project aims to download the PanTHERIA databases. It is + structured as a research compendium to be reproducible. + This is the result of the Practice 1 of the training course Reproducible + Research in Computational Ecology available at: + . +License: GPL-3 +Encoding: UTF-8 +Imports: + here, + utils +``` +::: + +{{< fa hand-point-right >}}  Finally edit the **README**: + +::: {.small} +``` +# Practice + +This project aims to download the [PanTHERIA](https://doi.org/10.1890/08-1494.1) +database (Jones _et al._, 2009). It is structured as a research compendium +to be reproducible. + +**NB.** This is the result of the Practice 1 of the training course +[Reproducible Research in Computational Ecology](https://rdatatoolbox.github.io). + + +## Content + +This project is structured as follow: + +. +| +├─ practice.Rproj # RStudio project file +| +├─ README.md # Presentation of the project +├─ DESCRIPTION # Project metadata +├─ LICENSE.md # License of the project +| +├─ data/ # Contains raw data +| └─ pantheria/ # PanTHERIA database +| └─ PanTHERIA_1-0_WR05_Aug2008.txt +| +├─ outputs/ # Contains results +├─ figures/ # Contains figures +| +├─ R/ # Contains R functions (only) +| └─ dl_pantheria_data.R # Function to download PanTHERIA data +| +├─ analyses/ # Contains R scripts +| └─ download-data.R # Script to download raw data +| +└─ make.R # Script to setup & run the project + + +## Installation + +Coming soon... + + +## Usage + +Open the `practice.Rproj` file in RStudio and run `source("make.R")` to launch +analyses. + +- All packages will be automatically installed and loaded +- Datasets will be saved in the `data/` directory + + +## License + +This project is released under the +[GPL-3](https://choosealicense.com/licenses/gpl-3.0/) license. + + +## Citation + +> Doe J (2024) Download PanTHERIA and WWF WildFinder databases. + + +## References + +Jone KE, Bielby J, Cardillo M _et al._ (2009) PanTHERIA: A +species-level database of life history, ecology, and geography of extant and +recently extinct mammals. _Ecology_, 90, 2648. +DOI: [10.1890/08-1494.1](https://doi.org/10.1890/08-1494.1) +``` + +::: + + +
+ +> **Congratulations** {{< fa wand-sparkles >}} +> +> Your project is now a **functional** and **reproducible** research compendium. + + +
+ +{{< fa lightbulb >}}  The final compendium can be found [**here**](https://github.com/rdatatoolbox/practice-1). + +
+ + +::: {.callout-note} +## The [`rcompendium::new_compendium()`](https://frbcesab.github.io/rcompendium/reference/new_compendium.html) function + +All these steps can be performed with a single function: +[`new_compendium()`](https://frbcesab.github.io/rcompendium/reference/new_compendium.html) from [`rcompendium`](https://github.com/frbcesab/rcompendium). Read the documentation carefully before using this function. +::: + + +
+ +## References + +Jones KE, Bielby J, Cardillo M _et al._ (2009) PanTHERIA: a species-level database of life history, ecology, and geography of extant and recently extinct mammals. _Ecology_, 90, 2648. +DOI: . + +Marwick B, Boettiger C & Mullen L (2018) Packaging data analytical work reproducibly using R (and friends). _PeerJ_. DOI: . diff --git a/posts/2024-09-24-research-compendium/rstudio-project.png b/posts/2024-09-24-research-compendium/rstudio-project.png new file mode 100644 index 0000000000000000000000000000000000000000..428f83858480b0c2e68564cfbd46ee5766e01fd6 GIT binary patch literal 66150 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 literal 0 HcmV?d00001