From 742dd25255649e071a3a2304013f3077140a41a6 Mon Sep 17 00:00:00 2001 From: peterdesmet Date: Wed, 17 Nov 2021 16:40:03 +0100 Subject: [PATCH 01/11] Change yaml indentation to 2 spaces --- content/articles/communicating/index.Rmd | 4 ++-- content/articles/computing/index.Rmd | 6 +++--- content/articles/geospatial_standards/index.Rmd | 6 +++--- content/articles/open_science/index.Rmd | 4 ++-- content/articles/skills/index.Rmd | 4 ++-- content/articles/statistics/index.Rmd | 4 ++-- .../installation/administrator/admin_install_r/index.Rmd | 6 +++--- content/tutorials/r_citations_markdown/index.Rmd | 6 +++--- content/tutorials/r_fixed_random/index.Rmd | 6 +++--- content/tutorials/r_paired_t_test/index.Rmd | 6 +++--- content/tutorials/r_setup_codingclub_session/index.Rmd | 6 +++--- content/tutorials/r_spde/index.Rmd | 6 +++--- content/tutorials/r_tidyverse_piping/index.Rmd | 8 ++++---- content/tutorials/r_zero_inflation/index.Rmd | 6 +++--- content/tutorials/r_zoom_in_ggplot/index.Rmd | 6 +++--- content/tutorials/spatial_standards_raster/index.Rmd | 6 +++--- content/tutorials/spatial_standards_vector/index.Rmd | 6 +++--- content/tutorials/spatial_wfs_services/index.Rmd | 6 +++--- content/tutorials/style_inbo_bibliography/index.Rmd | 6 +++--- 19 files changed, 54 insertions(+), 54 deletions(-) diff --git a/content/articles/communicating/index.Rmd b/content/articles/communicating/index.Rmd index fd2383fb1..d0ad0cbd2 100644 --- a/content/articles/communicating/index.Rmd +++ b/content/articles/communicating/index.Rmd @@ -6,8 +6,8 @@ bibliography: ../reproducible_research.bib categories: ["literature"] tags: ["literature", "open science"] output: - md_document: - preserve_yaml: true + md_document: + preserve_yaml: true --- This page lists **selected** literature and online resources. Some are related to existing tutorial pages, while others are not. They are supposed to be of high interest to this site's users. diff --git a/content/articles/computing/index.Rmd b/content/articles/computing/index.Rmd index ec26ff04a..23a0c4dfe 100644 --- a/content/articles/computing/index.Rmd +++ b/content/articles/computing/index.Rmd @@ -6,9 +6,9 @@ bibliography: ../reproducible_research.bib categories: ["literature"] tags: ["literature", "open science"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm --- This page lists **selected** literature and online resources. Some are related to existing tutorial pages, while others are not. They are supposed to be of high interest to this site's users. diff --git a/content/articles/geospatial_standards/index.Rmd b/content/articles/geospatial_standards/index.Rmd index 6e001e135..2a1fcaef5 100644 --- a/content/articles/geospatial_standards/index.Rmd +++ b/content/articles/geospatial_standards/index.Rmd @@ -8,9 +8,9 @@ bibliography: ../reproducible_research.bib categories: ["r", "gis"] tags: ["gis", "r", "open science"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm --- Some inspiration for this post came from the beautiful books of @lovelace_geocomputation_2020, @pebesma_edzer_spatial_2019 and @heijmans_spatial_2019, and from various websites. diff --git a/content/articles/open_science/index.Rmd b/content/articles/open_science/index.Rmd index 703ad36d7..dc5dd0971 100644 --- a/content/articles/open_science/index.Rmd +++ b/content/articles/open_science/index.Rmd @@ -6,8 +6,8 @@ bibliography: ../reproducible_research.bib categories: ["literature"] tags: ["literature", "open science"] output: - md_document: - preserve_yaml: true + md_document: + preserve_yaml: true --- This page lists **selected** literature and online resources. Some are related to existing tutorial pages, while others are not. They are supposed to be of high interest to this site's users. diff --git a/content/articles/skills/index.Rmd b/content/articles/skills/index.Rmd index 0e84a4fe0..35c66b94c 100644 --- a/content/articles/skills/index.Rmd +++ b/content/articles/skills/index.Rmd @@ -6,8 +6,8 @@ bibliography: ../reproducible_research.bib categories: ["literature"] tags: ["literature", "open science"] output: - md_document: - preserve_yaml: true + md_document: + preserve_yaml: true --- This page lists **selected** literature and online resources. Some are related to existing tutorial pages, while others are not. They are supposed to be of high interest to this site's users. diff --git a/content/articles/statistics/index.Rmd b/content/articles/statistics/index.Rmd index 181fdc093..2e11ab124 100644 --- a/content/articles/statistics/index.Rmd +++ b/content/articles/statistics/index.Rmd @@ -6,8 +6,8 @@ bibliography: ../reproducible_research.bib categories: ["literature"] tags: ["literature", "open science"] output: - md_document: - preserve_yaml: true + md_document: + preserve_yaml: true --- ```{r setup, include = FALSE} diff --git a/content/installation/administrator/admin_install_r/index.Rmd b/content/installation/administrator/admin_install_r/index.Rmd index d479e58df..b07fec604 100644 --- a/content/installation/administrator/admin_install_r/index.Rmd +++ b/content/installation/administrator/admin_install_r/index.Rmd @@ -6,9 +6,9 @@ authors: [thierryo] categories: ["installation"] tags: ["r", "installation"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm --- ```{r include = FALSE} diff --git a/content/tutorials/r_citations_markdown/index.Rmd b/content/tutorials/r_citations_markdown/index.Rmd index fa9a87f3d..77eb1938c 100644 --- a/content/tutorials/r_citations_markdown/index.Rmd +++ b/content/tutorials/r_citations_markdown/index.Rmd @@ -10,9 +10,9 @@ link-citations: true reference-section-title: References csl: https://raw.githubusercontent.com/citation-style-language/styles/master/research-institute-for-nature-and-forest.csl output: - md_document: - preserve_yaml: true - variant: gfm+definition_lists + md_document: + preserve_yaml: true + variant: gfm+definition_lists editor_options: markdown: wrap: sentence diff --git a/content/tutorials/r_fixed_random/index.Rmd b/content/tutorials/r_fixed_random/index.Rmd index e36a5c234..b3a9afa67 100644 --- a/content/tutorials/r_fixed_random/index.Rmd +++ b/content/tutorials/r_fixed_random/index.Rmd @@ -6,9 +6,9 @@ date: "`r Sys.Date()`" categories: ["r", "statistics"] tags: ["r", "analysis", "mixed model"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm --- ```{r setup, include=FALSE} diff --git a/content/tutorials/r_paired_t_test/index.Rmd b/content/tutorials/r_paired_t_test/index.Rmd index 10b4f4a26..de17f8afa 100644 --- a/content/tutorials/r_paired_t_test/index.Rmd +++ b/content/tutorials/r_paired_t_test/index.Rmd @@ -6,9 +6,9 @@ date: "`r Sys.Date()`" categories: ["r", "statistics"] tags: ["r", "analysis", "mixed model"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm --- ```{r setup, include=FALSE} diff --git a/content/tutorials/r_setup_codingclub_session/index.Rmd b/content/tutorials/r_setup_codingclub_session/index.Rmd index 2c3f1a90e..95efbc775 100644 --- a/content/tutorials/r_setup_codingclub_session/index.Rmd +++ b/content/tutorials/r_setup_codingclub_session/index.Rmd @@ -6,9 +6,9 @@ date: 2020-11-12 categories: ["r"] tags: ["data", "coding club", "r"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm --- diff --git a/content/tutorials/r_spde/index.Rmd b/content/tutorials/r_spde/index.Rmd index 38916454b..095446d44 100644 --- a/content/tutorials/r_spde/index.Rmd +++ b/content/tutorials/r_spde/index.Rmd @@ -6,9 +6,9 @@ date: "`r Sys.Date()`" categories: ["r", "statistics"] tags: ["r", "analysis", "mixed model", "INLA"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm --- This document is a quick and dirty illustration of how spatially correlated random effect can be fit with INLA. diff --git a/content/tutorials/r_tidyverse_piping/index.Rmd b/content/tutorials/r_tidyverse_piping/index.Rmd index 9f5e6fba0..2af549ad5 100644 --- a/content/tutorials/r_tidyverse_piping/index.Rmd +++ b/content/tutorials/r_tidyverse_piping/index.Rmd @@ -6,9 +6,9 @@ date: 2018-06-14 categories: ["r"] tags: ["tidyverse", "r"] output: - md_document: - preserve_yaml: true - variant: markdown_github + md_document: + preserve_yaml: true + variant: gfm --- ```{r setup, include=FALSE} @@ -72,4 +72,4 @@ mtcars %<>% This has been our first introduction to piping. There is however much more to learn! That is why you should definitely go to [this link](https://www.datacamp.com/community/tutorials/pipe-r-tutorial). -![](images/hooraypenguin.jpg){width=250px} \ No newline at end of file +![](images/hooraypenguin.jpg){width=250px} diff --git a/content/tutorials/r_zero_inflation/index.Rmd b/content/tutorials/r_zero_inflation/index.Rmd index 959ed2de3..b00b5954c 100644 --- a/content/tutorials/r_zero_inflation/index.Rmd +++ b/content/tutorials/r_zero_inflation/index.Rmd @@ -6,9 +6,9 @@ date: "`r Sys.Date()`" categories: ["r", "statistics"] tags: ["r", "analysis", "mixed model"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm --- ```{r setup, include=FALSE} diff --git a/content/tutorials/r_zoom_in_ggplot/index.Rmd b/content/tutorials/r_zoom_in_ggplot/index.Rmd index c7a89d88b..e68e71a59 100644 --- a/content/tutorials/r_zoom_in_ggplot/index.Rmd +++ b/content/tutorials/r_zoom_in_ggplot/index.Rmd @@ -6,9 +6,9 @@ date: "`r Sys.Date()`" categories: ["r"] tags: ["r", "ggplot2"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm --- ```{r setup, include=FALSE} diff --git a/content/tutorials/spatial_standards_raster/index.Rmd b/content/tutorials/spatial_standards_raster/index.Rmd index b13fc9429..3e6733afc 100644 --- a/content/tutorials/spatial_standards_raster/index.Rmd +++ b/content/tutorials/spatial_standards_raster/index.Rmd @@ -7,9 +7,9 @@ categories: ["r", "gis"] tags: ["gis", "r"] output: html_document: default - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm --- _General note: the way the `raster` package handles coordinate reference systems has just recently (at the time of writing) become compliant with recent GDAL 3 and PROJ >= 6 versions._ diff --git a/content/tutorials/spatial_standards_vector/index.Rmd b/content/tutorials/spatial_standards_vector/index.Rmd index de1d8edbd..6308aca74 100644 --- a/content/tutorials/spatial_standards_vector/index.Rmd +++ b/content/tutorials/spatial_standards_vector/index.Rmd @@ -7,9 +7,9 @@ categories: ["r", "gis"] tags: ["gis", "r"] output: html_document: default - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm --- ```{r include = FALSE} diff --git a/content/tutorials/spatial_wfs_services/index.Rmd b/content/tutorials/spatial_wfs_services/index.Rmd index eb11323e2..3283d100d 100644 --- a/content/tutorials/spatial_wfs_services/index.Rmd +++ b/content/tutorials/spatial_wfs_services/index.Rmd @@ -7,9 +7,9 @@ categories: ["r"] tags: ["gis", "webservice", "r", "maps"] bibliography: "../../articles/reproducible_research.bib" output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm --- ```{r include = FALSE} diff --git a/content/tutorials/style_inbo_bibliography/index.Rmd b/content/tutorials/style_inbo_bibliography/index.Rmd index a06d7c3a6..6ee663c80 100644 --- a/content/tutorials/style_inbo_bibliography/index.Rmd +++ b/content/tutorials/style_inbo_bibliography/index.Rmd @@ -6,9 +6,9 @@ date: "`r Sys.Date()`" categories: ["styleguide"] tags: ["bibliography", "csl", "INBOmd", "open science", "zotero", "mendeley", "endnote"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm --- ```{r setup, include=FALSE} From b1da6040afc5fa497160d937efff0da554fd3ceb Mon Sep 17 00:00:00 2001 From: peterdesmet Date: Wed, 17 Nov 2021 16:40:48 +0100 Subject: [PATCH 02/11] Add gfm where missing + remove html_document --- content/articles/communicating/index.Rmd | 1 + content/articles/open_science/index.Rmd | 1 + content/articles/skills/index.Rmd | 1 + content/articles/statistics/index.Rmd | 1 + content/tutorials/r_inboveg/index.Rmd | 1 + content/tutorials/spatial_standards_raster/index.Rmd | 1 - content/tutorials/spatial_standards_vector/index.Rmd | 1 - 7 files changed, 5 insertions(+), 2 deletions(-) diff --git a/content/articles/communicating/index.Rmd b/content/articles/communicating/index.Rmd index d0ad0cbd2..917f3031f 100644 --- a/content/articles/communicating/index.Rmd +++ b/content/articles/communicating/index.Rmd @@ -8,6 +8,7 @@ tags: ["literature", "open science"] output: md_document: preserve_yaml: true + variant: gfm --- This page lists **selected** literature and online resources. Some are related to existing tutorial pages, while others are not. They are supposed to be of high interest to this site's users. diff --git a/content/articles/open_science/index.Rmd b/content/articles/open_science/index.Rmd index dc5dd0971..9e9c63a4a 100644 --- a/content/articles/open_science/index.Rmd +++ b/content/articles/open_science/index.Rmd @@ -8,6 +8,7 @@ tags: ["literature", "open science"] output: md_document: preserve_yaml: true + variant: gfm --- This page lists **selected** literature and online resources. Some are related to existing tutorial pages, while others are not. They are supposed to be of high interest to this site's users. diff --git a/content/articles/skills/index.Rmd b/content/articles/skills/index.Rmd index 35c66b94c..33e5aa0a1 100644 --- a/content/articles/skills/index.Rmd +++ b/content/articles/skills/index.Rmd @@ -8,6 +8,7 @@ tags: ["literature", "open science"] output: md_document: preserve_yaml: true + variant: gfm --- This page lists **selected** literature and online resources. Some are related to existing tutorial pages, while others are not. They are supposed to be of high interest to this site's users. diff --git a/content/articles/statistics/index.Rmd b/content/articles/statistics/index.Rmd index 2e11ab124..7e641c889 100644 --- a/content/articles/statistics/index.Rmd +++ b/content/articles/statistics/index.Rmd @@ -8,6 +8,7 @@ tags: ["literature", "open science"] output: md_document: preserve_yaml: true + variant: gfm --- ```{r setup, include = FALSE} diff --git a/content/tutorials/r_inboveg/index.Rmd b/content/tutorials/r_inboveg/index.Rmd index c4a8374ba..2500fdf3d 100644 --- a/content/tutorials/r_inboveg/index.Rmd +++ b/content/tutorials/r_inboveg/index.Rmd @@ -7,6 +7,7 @@ tags: ["database", "queries"] output: md_document: preserve_yaml: true + variant: gfm --- ```{r setup, include=FALSE} diff --git a/content/tutorials/spatial_standards_raster/index.Rmd b/content/tutorials/spatial_standards_raster/index.Rmd index 3e6733afc..3e1730c19 100644 --- a/content/tutorials/spatial_standards_raster/index.Rmd +++ b/content/tutorials/spatial_standards_raster/index.Rmd @@ -6,7 +6,6 @@ date: 2020-09-15 categories: ["r", "gis"] tags: ["gis", "r"] output: - html_document: default md_document: preserve_yaml: true variant: gfm diff --git a/content/tutorials/spatial_standards_vector/index.Rmd b/content/tutorials/spatial_standards_vector/index.Rmd index 6308aca74..267801bec 100644 --- a/content/tutorials/spatial_standards_vector/index.Rmd +++ b/content/tutorials/spatial_standards_vector/index.Rmd @@ -6,7 +6,6 @@ date: 2020-02-03 categories: ["r", "gis"] tags: ["gis", "r"] output: - html_document: default md_document: preserve_yaml: true variant: gfm From 25d21f8e1a01adf5f8e40c614e7d76a7aa0fab42 Mon Sep 17 00:00:00 2001 From: peterdesmet Date: Wed, 17 Nov 2021 16:40:58 +0100 Subject: [PATCH 03/11] Remove unused figure --- .../unnamed-chunk-10-1.png | Bin 12410 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 content/tutorials/r_google_sheets/index_files/figure-markdown_github/unnamed-chunk-10-1.png diff --git a/content/tutorials/r_google_sheets/index_files/figure-markdown_github/unnamed-chunk-10-1.png b/content/tutorials/r_google_sheets/index_files/figure-markdown_github/unnamed-chunk-10-1.png deleted file mode 100644 index eb131acced30087d5edd01fbe5d1dc7dee5cfecd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12410 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 From cfcf21b619ff15d42414c1fbb169aa5c84259155 Mon Sep 17 00:00:00 2001 From: peterdesmet Date: Wed, 17 Nov 2021 16:41:26 +0100 Subject: [PATCH 04/11] Cleanup whitespace --- .../user/user_install_git/index.md | 1 - content/tutorials/r_beginners/index.md | 59 +++++++------------ .../tutorials/r_citations_markdown/index.Rmd | 21 ++++--- 3 files changed, 32 insertions(+), 49 deletions(-) diff --git a/content/installation/user/user_install_git/index.md b/content/installation/user/user_install_git/index.md index c60164cd3..6ce087712 100644 --- a/content/installation/user/user_install_git/index.md +++ b/content/installation/user/user_install_git/index.md @@ -12,7 +12,6 @@ tags: ["git", "version control", "installation"] 1. Open `.gitconfig` (rechtsklikken op het bestand en openen met bijvoorbeeld Notepad++) en vul jouw naam en e-mail aan. 1. Sla het bestand op. - ## Ubuntu Doe dezelfde stappen als onder Windows. diff --git a/content/tutorials/r_beginners/index.md b/content/tutorials/r_beginners/index.md index 1751d306f..98cb5d77b 100644 --- a/content/tutorials/r_beginners/index.md +++ b/content/tutorials/r_beginners/index.md @@ -20,9 +20,6 @@ Hoe maak je van je ingezamelde gegevens een reproduceerbare analyse, visualisati Bovenstaande topics worden gecombineerd in een opleiding van 4 workshops. Deze opleiding is bedoeld voor mensen die nog nooit met R gewerkt hebben. In de workshops wordt het materiaal in de handleidingen al doende uitgelegd, en afgewisseld met oefeningen. Na elke workshop wordt er altijd een huistaak aangeboden, die op vrijwillige basis ingediend kan worden, en van feedback voorzien. - - - ## R en RStudio Introductie tot R en Rstudio @@ -33,28 +30,22 @@ Introductie tot R en Rstudio - Coding basics in R - Vectoren en dataframes -[Handleiding](https://inbo.github.io/tutorials/tutorials/r_beginners/src/R_en_RStudio.pdf) -[Code](https://github.com/inbo/tutorials/blob/master/content/tutorials/r_beginners/src/R_en_RStudio_code.R) +[Handleiding](https://inbo.github.io/tutorials/tutorials/r_beginners/src/R_en_RStudio.pdf) +[Code](https://github.com/inbo/tutorials/blob/master/content/tutorials/r_beginners/src/R_en_RStudio_code.R) [Huistaak](https://inbo.github.io/tutorials/tutorials/r_beginners/src/R_en_RStudio_huistaak.pdf) - - - ## Inlezen van gegevens Introductie tot het inlezen van externe databestanden -- `readr` +- `readr` - `readxl` - `googlesheets4` -[Handleiding](https://inbo.github.io/tutorials/tutorials/r_beginners/src/data_inlezen.pdf) -[Data](https://github.com/inbo/tutorials/tree/master/content/tutorials/r_beginners/data) -[Code](https://github.com/inbo/tutorials/blob/master/content/tutorials/r_beginners/src/data_inlezen_code.R) -[Oefening](https://inbo.github.io/tutorials/tutorials/r_beginners/src/data_inlezen_oefening.pdf) - - - +[Handleiding](https://inbo.github.io/tutorials/tutorials/r_beginners/src/data_inlezen.pdf) +[Data](https://github.com/inbo/tutorials/tree/master/content/tutorials/r_beginners/data) +[Code](https://github.com/inbo/tutorials/blob/master/content/tutorials/r_beginners/src/data_inlezen_code.R) +[Oefening](https://inbo.github.io/tutorials/tutorials/r_beginners/src/data_inlezen_oefening.pdf) ## ggplot2 @@ -67,14 +58,11 @@ Introductie tot het maken van grafieken met ggplot2 - Titels - Plot bewaren -[Handleiding](https://inbo.github.io/tutorials/tutorials/r_beginners/src/ggplot.pdf) -[Data](https://github.com/inbo/tutorials/tree/master/content/tutorials/r_beginners/data) -[Code](https://github.com/inbo/tutorials/blob/master/content/tutorials/r_beginners/src/ggplot_code.R) -[Oefening](https://inbo.github.io/tutorials/tutorials/r_beginners/src/ggplot_oefening.pdf) -[Huistaak](https://inbo.github.io/tutorials/tutorials/r_beginners/src/data_inlezen_ggplot_huistaak.pdf) - - - +[Handleiding](https://inbo.github.io/tutorials/tutorials/r_beginners/src/ggplot.pdf) +[Data](https://github.com/inbo/tutorials/tree/master/content/tutorials/r_beginners/data) +[Code](https://github.com/inbo/tutorials/blob/master/content/tutorials/r_beginners/src/ggplot_code.R) +[Oefening](https://inbo.github.io/tutorials/tutorials/r_beginners/src/ggplot_oefening.pdf) +[Huistaak](https://inbo.github.io/tutorials/tutorials/r_beginners/src/data_inlezen_ggplot_huistaak.pdf) ## dplyr @@ -85,14 +73,11 @@ Introductie tot data manipulatie met dplyr - group_by, summarise - Tidy data: gather, spread -[Handleiding](https://inbo.github.io/tutorials/tutorials/r_beginners/src/dplyr.pdf) -[Data](https://github.com/inbo/tutorials/tree/master/content/tutorials/r_beginners/data) -[Code](https://github.com/inbo/tutorials/blob/master/content/tutorials/r_beginners/src/dplyr_code.R) -[Oefening](https://inbo.github.io/tutorials/tutorials/r_beginners/src/dplyr_oefening.pdf) -[Huistaak](https://inbo.github.io/tutorials/tutorials/r_beginners/src/dplyr_huistaak.pdf) - - - +[Handleiding](https://inbo.github.io/tutorials/tutorials/r_beginners/src/dplyr.pdf) +[Data](https://github.com/inbo/tutorials/tree/master/content/tutorials/r_beginners/data) +[Code](https://github.com/inbo/tutorials/blob/master/content/tutorials/r_beginners/src/dplyr_code.R) +[Oefening](https://inbo.github.io/tutorials/tutorials/r_beginners/src/dplyr_oefening.pdf) +[Huistaak](https://inbo.github.io/tutorials/tutorials/r_beginners/src/dplyr_huistaak.pdf) ## Rmarkdown @@ -104,8 +89,8 @@ Introductie tot het maken van een reproduceerbaar document met Rmarkdown - YAML header - Tabellen -[Handleiding](https://inbo.github.io/tutorials/tutorials/r_beginners/src/Rmarkdown.pdf) -[Code](https://github.com/inbo/tutorials/blob/master/content/tutorials/r_beginners/src/Rmarkdown_oefening.txt) -[Oefening](../../html/Rmarkdown_oefening_resultaat.html) -[Figuur voor oefening](https://github.com/inbo/tutorials/blob/master/content/tutorials/r_beginners/Figuren/iris-machinelearning.png) -[Huistaak](https://inbo.github.io/tutorials/tutorials/r_beginners/src/Rmarkdown_huistaak.pdf) +[Handleiding](https://inbo.github.io/tutorials/tutorials/r_beginners/src/Rmarkdown.pdf) +[Code](https://github.com/inbo/tutorials/blob/master/content/tutorials/r_beginners/src/Rmarkdown_oefening.txt) +[Oefening](../../html/Rmarkdown_oefening_resultaat.html) +[Figuur voor oefening](https://github.com/inbo/tutorials/blob/master/content/tutorials/r_beginners/Figuren/iris-machinelearning.png) +[Huistaak](https://inbo.github.io/tutorials/tutorials/r_beginners/src/Rmarkdown_huistaak.pdf) diff --git a/content/tutorials/r_citations_markdown/index.Rmd b/content/tutorials/r_citations_markdown/index.Rmd index 77eb1938c..f31ebccba 100644 --- a/content/tutorials/r_citations_markdown/index.Rmd +++ b/content/tutorials/r_citations_markdown/index.Rmd @@ -118,7 +118,7 @@ To specify the style file for the Research Institute for Nature and Forest it is csl = "https://raw.githubusercontent.com/citation-style-language/styles/master/research-institute-for-nature-and-forest.csl") ``` -### Other YAML citation arguments {#other-yaml-citation-arguments} +### Other YAML citation arguments {\#other-yaml-citation-arguments} The [ymlthis field guide](https://ymlthis.r-lib.org/articles/yaml-fieldguide.html#citations-1), [Pandoc](https://pandoc.org/MANUAL.html#other-relevant-metadata-fields) & associated [citeproc](https://github.com/jgm/citeproc/blob/master/man/citeproc.1.md) documentation and [RStudio VME citations section](https://rstudio.github.io/visual-markdown-editing/#/citations) mention the following useful arguments: @@ -190,20 +190,19 @@ The defaults are OK. ![](global-options.png) -# Citing documents {#citing-documents} - +# Citing documents {\#citing-documents} ## Syntax The following Markdown syntax is used to refer to documents. It is based on citation keys and the basic building block is `@citationkey`. -| syntax | result (depending on chosen csl style) | -|----------------------------------------------------------------------|--------------------------------------------------------------------| -| `@adams1975` concludes that ... | @adams1975 concludes that ... | -| `@adams1975[p.33]` concludes that ... | @adams1975 [p.33] concludes that ... | -| ... end of sentence `[@adams1975]`. | ... end of sentence [@adams1975]. | -| ... end of sentence `[see @adams1975,p.33]`. | ... end of sentence [see @adams1975,p.33]. | -| delineate multiple authors with colon: `[@adams1975; @aberdeen1958]` | delineate multiple authors with colon: [@adams1975; @aberdeen1958] | +| syntax | result (depending on chosen csl style) | +|----------------------------------------------------------------------|------------------------------------------------------------------------| +| `@adams1975` concludes that ... | \@adams1975 concludes that ... | +| `@adams1975[p.33]` concludes that ... | \@adams1975 \[p.33\] concludes that ... | +| ... end of sentence `[@adams1975]`. | ... end of sentence \[\@adams1975\]. | +| ... end of sentence `[see @adams1975,p.33]`. | ... end of sentence \[see \@adams1975,p.33\]. | +| delineate multiple authors with colon: `[@adams1975; @aberdeen1958]` | delineate multiple authors with colon: \[\@adams1975; \@aberdeen1958\] | ## Insert a citation @@ -238,7 +237,7 @@ For instance: knitr::write_bib(c("base", "bookdown", "rmarkdown"), "packages.bib") ``` -... allows us to cite @R-base, @R-bookdown and @R-rmarkdown if we add `packages.bib` to the bibliography YAML field. +... allows us to cite \@R-base, \@R-bookdown and \@R-rmarkdown if we add `packages.bib` to the bibliography YAML field. # Bibliography placement From a63e887ea9bc537e32b6325e0020a975400c19eb Mon Sep 17 00:00:00 2001 From: peterdesmet Date: Wed, 17 Nov 2021 16:54:02 +0100 Subject: [PATCH 05/11] Change markdown_github to gfm Could not run knit for r_database_access and r_gbif_name_matching --- content/tutorials/r_database_access/index.Rmd | 6 +- .../tutorials/r_gbif_name_matching/index.Rmd | 6 +- .../r_large_data_files_handling/index.Rmd | 7 +- .../r_large_data_files_handling/index.md | 364 ++++++++++++------ .../figure-gfm/streamexample-1.png | Bin 0 -> 24150 bytes .../streamexample-1.png | Bin 14669 -> 0 bytes content/tutorials/r_script_sections/index.Rmd | 6 +- content/tutorials/r_script_sections/index.md | 63 +-- content/tutorials/styleguide_r_code/index.Rmd | 6 +- content/tutorials/styleguide_r_code/index.md | 287 +++++++++----- 10 files changed, 491 insertions(+), 254 deletions(-) create mode 100644 content/tutorials/r_large_data_files_handling/index_files/figure-gfm/streamexample-1.png delete mode 100644 content/tutorials/r_large_data_files_handling/index_files/figure-markdown_github/streamexample-1.png diff --git a/content/tutorials/r_database_access/index.Rmd b/content/tutorials/r_database_access/index.Rmd index 0301c966f..a70beed93 100644 --- a/content/tutorials/r_database_access/index.Rmd +++ b/content/tutorials/r_database_access/index.Rmd @@ -6,9 +6,9 @@ date: 2017-02-03 categories: ["r"] tags: ["database", "r", "data"] output: - md_document: - preserve_yaml: true - variant: markdown_github + md_document: + preserve_yaml: true + variant: gfm --- ```{r setup, include=FALSE} diff --git a/content/tutorials/r_gbif_name_matching/index.Rmd b/content/tutorials/r_gbif_name_matching/index.Rmd index 1eb72b3ee..0a8ac05f0 100644 --- a/content/tutorials/r_gbif_name_matching/index.Rmd +++ b/content/tutorials/r_gbif_name_matching/index.Rmd @@ -6,9 +6,9 @@ date: 2019-08-21 categories: ["r"] tags: ["api", "webservice", "r", "gbif", "biodiversity"] output: - md_document: - preserve_yaml: true - variant: markdown_github + md_document: + preserve_yaml: true + variant: gfm --- ## Introduction diff --git a/content/tutorials/r_large_data_files_handling/index.Rmd b/content/tutorials/r_large_data_files_handling/index.Rmd index 03b59af2b..1c032adf5 100644 --- a/content/tutorials/r_large_data_files_handling/index.Rmd +++ b/content/tutorials/r_large_data_files_handling/index.Rmd @@ -6,9 +6,9 @@ date: 2017-02-10 categories: ["r"] tags: ["tidyverse", "r", "database"] output: - md_document: - preserve_yaml: true - variant: markdown_github + md_document: + preserve_yaml: true + variant: gfm --- ```{r setup, include=FALSE} @@ -300,4 +300,3 @@ Remark that the dates are properly handled, by making sure the date representati file.remove("example.sqlite") file.remove("example2.sqlite") ``` - diff --git a/content/tutorials/r_large_data_files_handling/index.md b/content/tutorials/r_large_data_files_handling/index.md index 8430220f3..5f8b6ba82 100644 --- a/content/tutorials/r_large_data_files_handling/index.md +++ b/content/tutorials/r_large_data_files_handling/index.md @@ -6,36 +6,50 @@ date: 2017-02-10 categories: ["r"] tags: ["tidyverse", "r", "database"] output: - md_document: - preserve_yaml: true - variant: markdown_github + md_document: + preserve_yaml: true + variant: gfm --- -Intro ------ +## Intro -R is known to have difficulties handling large data files. Here we will explore some tips that make working with such files in R less painfull. +R is known to have difficulties handling large data files. Here we will +explore some tips that make working with such files in R less painfull. -tl;dr ------ +## tl;dr -- If you can comfortably work with the entire file in memory, but reading the file is rather slow, consider using the `data.table` package and [read the file with its `fread` function](#loadentire). +- If you can comfortably work with the entire file in memory, but + reading the file is rather slow, consider using the `data.table` + package and [read the file with its `fread` function](#loadentire). - If your file does not comfortably fit in memory: - [Use `sqldf`](#sqldftit) if you have to stick to `csv` files. - - Use a SQLite database and query it using either [SQL queries](#sqlitestrat) or [`dplyr`](#dplyrstrat). - - [Convert](#convertsqlite) your `csv` file to a `sqlite` database in order to query + - Use a SQLite database and query it using either [SQL + queries](#sqlitestrat) or [`dplyr`](#dplyrstrat). + - [Convert](#convertsqlite) your `csv` file to a `sqlite` database + in order to query -Downloading the example files ------------------------------ +## Downloading the example files -While you can directly test this tutorial on your own large data files, we will use bird tracking data from the [LifeWatch bird tracking network](https://doi.org/10.3897/zookeys.555.6173) for the examples. We have made two versions of some tracking data available for download: a `.csv` file (text data) and a `.db` file (sqlite data). Both contain processed log files; for more information on the processing, see the [BirdTrackingEtl package](https://github.com/inbo/bird-tracking-etl). +While you can directly test this tutorial on your own large data files, +we will use bird tracking data from the [LifeWatch bird tracking +network](https://doi.org/10.3897/zookeys.555.6173) for the examples. We +have made two versions of some tracking data available for download: a +`.csv` file (text data) and a `.db` file (sqlite data). Both contain +processed log files; for more information on the processing, see the +[BirdTrackingEtl package](https://github.com/inbo/bird-tracking-etl). ``` r csv.name <- "2016-04-20-processed-logs-big-file-example.csv" db.name <- "2016-04-20-processed-logs-big-file-example.db" ``` -The evaluation of the next code chunk is ignored by default as the downloading and unzipping of the files results in more than 3 GB of data. If you do want to download the files yourself and test the other chunks, run the code and download the `csv` and `sqlite` examples. Make sure you have the `R.utils` package available (for unzipping the downloaded files). If not, use the command `install.packages("R.utils")` in your R console to download the package. +The evaluation of the next code chunk is ignored by default as the +downloading and unzipping of the files results in more than 3 GB of +data. If you do want to download the files yourself and test the other +chunks, run the code and download the `csv` and `sqlite` examples. Make +sure you have the `R.utils` package available (for unzipping the +downloaded files). If not, use the command `install.packages("R.utils")` +in your R console to download the package. ``` r library("R.utils") @@ -56,15 +70,19 @@ if (!file.exists(db.name)) { } ``` -Loading a large dataset: use `fread()` or functions from `readr` instead of `read.xxx()`. ------------------------------------------------------------------------------------------ +## Loading a large dataset: use `fread()` or functions from `readr` instead of `read.xxx()`. ``` r library("data.table") library("readr") ``` -If you really need to read an entire csv in memory, by default, R users use the `read.table` method or variations thereof (such as `read.csv`). However, `fread` from the `data.table` package is a lot faster. Furthermore, the `readr` package also provides more optimized reading functions (`read_csv`, `read_delim`,...). Let's measure the time to read in the data using these three different methods. +If you really need to read an entire csv in memory, by default, R users +use the `read.table` method or variations thereof (such as `read.csv`). +However, `fread` from the `data.table` package is a lot faster. +Furthermore, the `readr` package also provides more optimized reading +functions (`read_csv`, `read_delim`,…). Let’s measure the time to read +in the data using these three different methods. ``` r read.table.timing <- system.time(read.table(csv.name, header = TRUE, sep = ",")) @@ -76,27 +94,57 @@ data ``` ## method timing - ## 1 read.table 362.819 - ## 2 readr 34.016 - ## 3 fread 24.785 - -`fread` and `read_delim` are indeed much faster then the default `read.table`. However, the result of `fread` is a `data.table` and the result of `read_delim` is a `tibble`. Both are not a `data.frame`. The `data.table` package describes the `data.table` object as a more performant replacement for the `data.frame`. This means that selecting, filtering and aggregating data is much faster on a `data.table` compared to the standard `data.frame` but it requires you to use a slightly different syntax. A `tibble` is very similar to a `data.frame`, but provides more convenience when printing or subsetting the data table. - -You can find the `data.table` package on [CRAN](https://cran.r-project.org/web/packages/data.table/index.html). A good place to learn this package are the package vignettes. The [introduction to data.table](https://cran.r-project.org/web/packages/data.table/vignettes/datatable-intro-vignette.html) should be enough to get started. The `readr` package is also on [CRAN](https://cran.r-project.org/web/packages/readr/index.html). It belongs to a suite of R packages aiming to improve data manipulation in R, called [tidyverse](http://tidyverse.org/). More examples and explanation about `readr` is provided on the [readr website](http://readr.tidyverse.org/). - -Data files that don't fit in memory ------------------------------------ - -If you are not able to read in the data file, because it does not fit in memory (or because R becomes too slow when you load the entire dataset), you will need to limit the amount of data that will actually be stored in memory. There are a couple of options which we will investigate: - -1. limit the number of lines you are trying to read for some exploratory analysis. Once you are happy with the analysis you want to run on the entire dataset, move to another machine. -2. limit the number of columns you are reading to reduce the memory required to store the data. -3. limit both the number of rows and the number of columns using `sqldf`. + ## 1 read.table 183.732 + ## 2 readr 3.625 + ## 3 fread 12.564 + +`fread` and `read_delim` are indeed much faster then the default +`read.table`. However, the result of `fread` is a `data.table` and the +result of `read_delim` is a `tibble`. Both are not a `data.frame`. The +`data.table` package describes the `data.table` object as a more +performant replacement for the `data.frame`. This means that selecting, +filtering and aggregating data is much faster on a `data.table` compared +to the standard `data.frame` but it requires you to use a slightly +different syntax. A `tibble` is very similar to a `data.frame`, but +provides more convenience when printing or subsetting the data table. + +You can find the `data.table` package on +[CRAN](https://cran.r-project.org/web/packages/data.table/index.html). A +good place to learn this package are the package vignettes. The +[introduction to +data.table](https://cran.r-project.org/web/packages/data.table/vignettes/datatable-intro-vignette.html) +should be enough to get started. The `readr` package is also on +[CRAN](https://cran.r-project.org/web/packages/readr/index.html). It +belongs to a suite of R packages aiming to improve data manipulation in +R, called [tidyverse](http://tidyverse.org/). More examples and +explanation about `readr` is provided on the [readr +website](http://readr.tidyverse.org/). + +## Data files that don’t fit in memory + +If you are not able to read in the data file, because it does not fit in +memory (or because R becomes too slow when you load the entire dataset), +you will need to limit the amount of data that will actually be stored +in memory. There are a couple of options which we will investigate: + +1. limit the number of lines you are trying to read for some + exploratory analysis. Once you are happy with the analysis you want + to run on the entire dataset, move to another machine. +2. limit the number of columns you are reading to reduce the memory + required to store the data. +3. limit both the number of rows and the number of columns using + `sqldf`. 4. stream the data. ### 1. Limit the number of lines you read (`fread`) -Limiting the number of lines you read is easy. Just use the `nrows` and/or `skip` option (available to both `read.table` and `fread`). `skip` can be used to skip a number of rows, but you can also pass a string to this parameter causing `fread` to only start reading lines from the first line matching that string. Let's say we only want to start reading lines after we find a line matching the pattern `2015-06-12 15:14:39`. We can do that like this: +Limiting the number of lines you read is easy. Just use the `nrows` +and/or `skip` option (available to both `read.table` and `fread`). +`skip` can be used to skip a number of rows, but you can also pass a +string to this parameter causing `fread` to only start reading lines +from the first line matching that string. Let’s say we only want to +start reading lines after we find a line matching the pattern +`2015-06-12 15:14:39`. We can do that like this: ``` r sprintf("Number of lines in full data set: %s", nrow(allData)) @@ -111,11 +159,21 @@ sprintf("Number of lines in data set with skipped lines: %s", nrow(subSet)) ## [1] "Number of lines in data set with skipped lines: 9998" -Skipping rows this way is obviously not giving you the entire dataset, so this strategy is only useful for doing exploratory analysis on a subset of your data. Note that also `read_delim` provides a `n_max` argument to limit the number of lines to read. If you want to explore the whole dataset, limiting the number of columns you read can be a more useful strategy. +Skipping rows this way is obviously not giving you the entire dataset, +so this strategy is only useful for doing exploratory analysis on a +subset of your data. Note that also `read_delim` provides a `n_max` +argument to limit the number of lines to read. If you want to explore +the whole dataset, limiting the number of columns you read can be a more +useful strategy. ### 2. Limit the number of columns you read (`fread`) -If you only need 4 columns of the 21 columns present in the file, you can tell `fread` to only select those 4. This can have a major impact on the memory footprint of your data. The option you need for this is: `select`. With this, you can specify a number of columns to keep. The opposite - specifying the columns you want to drop - can be accomplished with the `drop` option. +If you only need 4 columns of the 21 columns present in the file, you +can tell `fread` to only select those 4. This can have a major impact on +the memory footprint of your data. The option you need for this is: +`select`. With this, you can specify a number of columns to keep. The +opposite - specifying the columns you want to drop - can be accomplished +with the `drop` option. ``` r fourColumns = fread(csv.name, select = c("device_info_serial", "date_time", @@ -124,27 +182,47 @@ fourColumns = fread(csv.name, select = c("device_info_serial", "date_time", sprintf("Size of total data in memory: %s MB", utils::object.size(allData)/1000000) ``` - ## [1] "Size of total data in memory: 1434.074264 MB" + ## [1] "Size of total data in memory: 1173.480728 MB" ``` r sprintf("Size of only four columns in memory: %s MB", utils::object.size(fourColumns)/1000000) ``` - ## [1] "Size of only four columns in memory: 365.90692 MB" + ## [1] "Size of only four columns in memory: 105.311936 MB" -The difference might not be as large as you would expect. R objects claim more memory than needed to store the data alone, as they keep pointers, and other object attributes. But still, the difference could save you. +The difference might not be as large as you would expect. R objects +claim more memory than needed to store the data alone, as they keep +pointers, and other object attributes. But still, the difference could +save you. ### 3. Limiting both the number of rows and the number of columns using `sqldf` -The [sqldf package](https://cran.r-project.org/web/packages/sqldf/sqldf.pdf) allows you to run SQL-like queries on a file, resulting in only a selection of the file being read. It allows you to limit both the number of lines and the number of rows at the same time. In the background, this actually creates a sqlite database on the fly to execute the query. Consider using the package when starting from a csv file, but the actual strategy boils down to making a sqlite database file of your data. See [this section below](#the-database-file-strategy) to learn how to interact with those and create a SQlite database from a CSV-file. +The [sqldf +package](https://cran.r-project.org/web/packages/sqldf/sqldf.pdf) allows +you to run SQL-like queries on a file, resulting in only a selection of +the file being read. It allows you to limit both the number of lines and +the number of rows at the same time. In the background, this actually +creates a sqlite database on the fly to execute the query. Consider +using the package when starting from a csv file, but the actual strategy +boils down to making a sqlite database file of your data. See [this +section below](#the-database-file-strategy) to learn how to interact +with those and create a SQlite database from a CSV-file. ### 4. Streaming data -**Short:** streaming a file in R is a bad idea. If you are interested why, read the rest of this section. +**Short:** streaming a file in R is a bad idea. If you are interested +why, read the rest of this section. -Streaming a file means reading it line by line and only keeping the lines you need or do stuff with the lines while you read through the file. It turns out that R is really not very efficient in streaming files. The main reason is the memory allocation process that has difficulties with a constantly growing object (which can be a dataframe containing only the selected lines). +Streaming a file means reading it line by line and only keeping the +lines you need or do stuff with the lines while you read through the +file. It turns out that R is really not very efficient in streaming +files. The main reason is the memory allocation process that has +difficulties with a constantly growing object (which can be a dataframe +containing only the selected lines). -In the next code block, we will read parts of our data file once using the `fread`function, and once line by line. You'll see the performance issue with the streaming solution. +In the next code block, we will read parts of our data file once using +the `fread`function, and once line by line. You’ll see the performance +issue with the streaming solution. ``` r library(ggplot2) @@ -186,21 +264,36 @@ qplot(n, execTime, data = pdata, color = algorithm, xlab = "number of lines read", ylab = "execution time (s)") ``` -![](index_files/figure-markdown_github/streamexample-1.png) +![](index_files/figure-gfm/streamexample-1.png) -The database file strategy --------------------------- +## The database file strategy ### Working with SQLite databases -SQLite databases are single file databases meaning you can simply download them, store them in a folder or share them with colleagues. Similar to a csv. They are however more powerful than csv's because of two important features: - -- Support for SQL: this allows you to execute intelligent filters on your data, similar to the `sqldf` package or database environments you are familiar with. That way, you can reduce the amount of data that's stored in memory by filtering out rows or columns. -- Indexes: SQLite databases contain indexes. An index is something like an ordered version of a column. When enabled on a column, you can search through the column much faster. We will demonstrate this below. - -We have downloaded a second file `2016-04-20-processed-logs-big-file-example.db` that contains the same data as the `2016-04-20-processed-logs-big-file-example.csv` file, but as a sqlite database. Furthermore, the database file contains indexes which will dramatically drop the time needed to perform search queries. If you do not have a SQLite database containing your data, you can first convert your csv into a SQlite as described [further in this tutorial](#convertsqlite). - -Let's first connect to the database and list the available tables. +SQLite databases are single file databases meaning you can simply +download them, store them in a folder or share them with colleagues. +Similar to a csv. They are however more powerful than csv’s because of +two important features: + +- Support for SQL: this allows you to execute intelligent filters on + your data, similar to the `sqldf` package or database environments + you are familiar with. That way, you can reduce the amount of data + that’s stored in memory by filtering out rows or columns. +- Indexes: SQLite databases contain indexes. An index is something + like an ordered version of a column. When enabled on a column, you + can search through the column much faster. We will demonstrate this + below. + +We have downloaded a second file +`2016-04-20-processed-logs-big-file-example.db` that contains the same +data as the `2016-04-20-processed-logs-big-file-example.csv` file, but +as a sqlite database. Furthermore, the database file contains indexes +which will dramatically drop the time needed to perform search queries. +If you do not have a SQLite database containing your data, you can first +convert your csv into a SQlite as described [further in this +tutorial](#create-a-sqlite-database-from-a-csv-file). + +Let’s first connect to the database and list the available tables. ``` r library(RSQLite) @@ -210,32 +303,23 @@ db <- dbConnect(SQLite(), dbname = db.name) dbListTables(db) ``` - ## [1] "SpatialIndex" - ## [2] "geom_cols_ref_sys" - ## [3] "geometry_columns" - ## [4] "geometry_columns_auth" - ## [5] "geometry_columns_field_infos" - ## [6] "geometry_columns_statistics" - ## [7] "geometry_columns_time" - ## [8] "processed_logs" - ## [9] "spatial_ref_sys" - ## [10] "spatialite_history" - ## [11] "sql_statements_log" - ## [12] "sqlite_sequence" - ## [13] "vector_layers" - ## [14] "vector_layers_auth" - ## [15] "vector_layers_field_infos" - ## [16] "vector_layers_statistics" - ## [17] "views_geometry_columns" - ## [18] "views_geometry_columns_auth" - ## [19] "views_geometry_columns_field_infos" - ## [20] "views_geometry_columns_statistics" - ## [21] "virts_geometry_columns" - ## [22] "virts_geometry_columns_auth" - ## [23] "virts_geometry_columns_field_infos" - ## [24] "virts_geometry_columns_statistics" - -Let's try to select rows where the device id matches a given value (e.g. 860), and the date time is between two given timestamps. For our analysis, we only need `date_time`, `latitude`, `longitude` and `altitude` so we will only select those. + ## [1] "SpatialIndex" "geom_cols_ref_sys" + ## [3] "geometry_columns" "geometry_columns_auth" + ## [5] "geometry_columns_field_infos" "geometry_columns_statistics" + ## [7] "geometry_columns_time" "processed_logs" + ## [9] "spatial_ref_sys" "spatialite_history" + ## [11] "sql_statements_log" "sqlite_sequence" + ## [13] "vector_layers" "vector_layers_auth" + ## [15] "vector_layers_field_infos" "vector_layers_statistics" + ## [17] "views_geometry_columns" "views_geometry_columns_auth" + ## [19] "views_geometry_columns_field_infos" "views_geometry_columns_statistics" + ## [21] "virts_geometry_columns" "virts_geometry_columns_auth" + ## [23] "virts_geometry_columns_field_infos" "virts_geometry_columns_statistics" + +Let’s try to select rows where the device id matches a given value +(e.g. 860), and the date time is between two given timestamps. For our +analysis, we only need `date_time`, `latitude`, `longitude` and +`altitude` so we will only select those. ``` r sqlTiming <- system.time(data <- dbGetQuery(conn = db, @@ -250,9 +334,16 @@ print(sqlTiming[3]) ``` ## elapsed - ## 13.48 + ## 40.405 -This provides a convenient and fast way to request subsets of data from our large data file. We could do the same analysis for each of the serial numbers, each time only loading that subset of the data. As an example, consider the calculation of the average altitude over the specified period for each of the bird serial identifiers in the list `serial_id_list`. By using a for loop, the calculation is done for each of the birds separately and the amount of data loaded into memory at the same time is lower: +This provides a convenient and fast way to request subsets of data from +our large data file. We could do the same analysis for each of the +serial numbers, each time only loading that subset of the data. As an +example, consider the calculation of the average altitude over the +specified period for each of the bird serial identifiers in the list +`serial_id_list`. By using a for loop, the calculation is done for each +of the birds separately and the amount of data loaded into memory at the +same time is lower: ``` r serial_id_list <- c(853, 860, 783) @@ -277,11 +368,20 @@ for (serialid in serial_id_list) { ## [1] "serialID 860: 23.550518" ## [1] "serialID 783: 14.900030" -Remark that we use the `sprintf` function to dynamically replace the serial id in the sqlite query we will execute. For each loop, the `%d` is replaced by the value of the serial id of the respective loop. Read the [manual](https://stat.ethz.ch/R-manual/R-devel/library/base/html/sprintf.html) of the `sprintf` function for more information and options. +Remark that we use the `sprintf` function to dynamically replace the +serial id in the sqlite query we will execute. For each loop, the `%d` +is replaced by the value of the serial id of the respective loop. Read +the +[manual](https://stat.ethz.ch/R-manual/R-devel/library/base/html/sprintf.html) +of the `sprintf` function for more information and options. ### Interacting with SQLite databases using `dplyr` -If you're not comfortable with writing queries in SQL, R has a great alternative: `dplyr`. `dplyr` can connect to a SQLite database and you can perform the same operations on it that you would do on a dataframe. However, dplyr will translate your commands to SQL, allowing you to take advantage of the indexes in the SQLite database. +If you’re not comfortable with writing queries in SQL, R has a great +alternative: `dplyr`. `dplyr` can connect to a SQLite database and you +can perform the same operations on it that you would do on a dataframe. +However, dplyr will translate your commands to SQL, allowing you to take +advantage of the indexes in the SQLite database. ``` r library(dplyr) @@ -296,8 +396,8 @@ head(results) ``` ## # Source: lazy query [?? x 4] - ## # Database: sqlite 3.19.3 - ## # [/home/stijn_vanhoey/githubs/inbo_tutorials/content/tutorials/r_large_data_files_handling/2016-04-20-processed-logs-big-file-example.db] + ## # Database: sqlite 3.36.0 + ## # [/Users/peter_desmet/Coding/Repositories/inbo/tutorials/content/tutorials/r_large_data_files_handling/2016-04-20-processed-logs-big-file-example.db] ## date_time latitude longitude altitude ## ## 1 2014-03-10 12:43:37 44.0 -7.59 626 @@ -307,13 +407,23 @@ head(results) ## 5 2014-03-10 13:43:54 44.1 -7.72 174 ## 6 2014-03-10 13:59:06 44.1 -7.73 23 -Dplyr provides the ability to perform queries as above without the need to know SQL. If you want to learn more about how to use `dplyr` with a SQLite database, head over to [this vignette](https://cran.r-project.org/web/packages/dplyr/vignettes/databases.html). +Dplyr provides the ability to perform queries as above without the need +to know SQL. If you want to learn more about how to use `dplyr` with a +SQLite database, head over to [this +vignette](https://cran.r-project.org/web/packages/dplyr/vignettes/databases.html). -### Create a SQLite databases from a CSV file +### Create a SQLite database from a CSV file -In the case you have a CSV file available and you would like to query the data using SQL queries or with `dplyr` as shown in the previous sections, you can decide to convert the data to a SQlite database. The conversion will require some time, but once available, it provides the opportunity to query the data using SQL queries or with `dplyr` as shown in the previous sections. Moreover, you can easily add additional tables with related information to combine the data with. +In the case you have a CSV file available and you would like to query +the data using SQL queries or with `dplyr` as shown in the previous +sections, you can decide to convert the data to a SQlite database. The +conversion will require some time, but once available, it provides the +opportunity to query the data using SQL queries or with `dplyr` as shown +in the previous sections. Moreover, you can easily add additional tables +with related information to combine the data with. -If you already loaded the CSV file into memory, the creation of a SQLITE database is very straighforward and can be achieved in two steps: +If you already loaded the CSV file into memory, the creation of a SQLITE +database is very straighforward and can be achieved in two steps: ``` r db <- dbConnect(SQLite(), dbname = "example.sqlite") @@ -321,7 +431,11 @@ dbWriteTable(db, "birdtracks", allData) dbDisconnect(db) ``` -The first command creates a new database when the file `example.sqlite` does not exist already. The command `dbWriteTable` writes the table in the database. Hence, we can rerun the query from the previous section, but now on the newly created SQlite database, with the single created table `birdtracks`: +The first command creates a new database when the file `example.sqlite` +does not exist already. The command `dbWriteTable` writes the table in +the database. Hence, we can rerun the query from the previous section, +but now on the newly created SQlite database, with the single created +table `birdtracks`: ``` r my_db <- src_sqlite("example.sqlite", create = FALSE) @@ -335,22 +449,35 @@ head(results) ``` ## # Source: lazy query [?? x 4] - ## # Database: sqlite 3.19.3 - ## # [/home/stijn_vanhoey/githubs/inbo_tutorials/content/tutorials/r_large_data_files_handling/example.sqlite] - ## date_time latitude longitude altitude - ## - ## 1 2014-03-10 12:43:37 44.0 -7.59 626 - ## 2 2014-03-10 12:58:32 44.1 -7.67 405 - ## 3 2014-03-10 13:13:52 44.1 -7.69 326 - ## 4 2014-03-10 13:28:57 44.1 -7.71 250 - ## 5 2014-03-10 13:43:54 44.1 -7.72 174 - ## 6 2014-03-10 13:59:06 44.1 -7.73 23 - -However, when working with really large CSV files, you do not want to load the entire file into memory first (this is the whole point of this tutorial). An alternative strategy is to load the data from the CSV file in chunks (small sections) and write them step by step to the SQlite database. - -This can be implemented by reading the CSV file in small sections (let's say 50000 lines each time) and move all sections to a given table in a sqlite database. As this is a recurrent task, we will provide the transformation in a custom written function, called `csv_to_sqlite`. The function is available within the [`inborutils` package](https://inbo.github.io/inborutils/). Check the function documentation [online](https://inbo.github.io/inborutils/reference/csv_to_sqlite.html) or by typing `?csv_to_sqlite` after installing and loading the `inborutils` package. As SQlite does not natively support `date` and `datetime` representations, the function converts those columns to an appropriate string representation before copying the dates to sqlite. To check for the date handling, the `lubridate` package is used. - -As an example, let's convert the processed bird logs csv file to a sqlite database, called `example.sqlite` as a table `birdtracks`. Using the default values for the preprocessing number of lines and the chunk size, the conversion is as follows: + ## # Database: sqlite 3.36.0 + ## # [/Users/peter_desmet/Coding/Repositories/inbo/tutorials/content/tutorials/r_large_data_files_handling/example.sqlite] + ## # … with 4 variables: date_time , latitude , longitude , + ## # altitude + +However, when working with really large CSV files, you do not want to +load the entire file into memory first (this is the whole point of this +tutorial). An alternative strategy is to load the data from the CSV file +in chunks (small sections) and write them step by step to the SQlite +database. + +This can be implemented by reading the CSV file in small sections (let’s +say 50000 lines each time) and move all sections to a given table in a +sqlite database. As this is a recurrent task, we will provide the +transformation in a custom written function, called `csv_to_sqlite`. The +function is available within the [`inborutils` +package](https://inbo.github.io/inborutils/). Check the function +documentation +[online](https://inbo.github.io/inborutils/reference/csv_to_sqlite.html) +or by typing `?csv_to_sqlite` after installing and loading the +`inborutils` package. As SQlite does not natively support `date` and +`datetime` representations, the function converts those columns to an +appropriate string representation before copying the dates to sqlite. To +check for the date handling, the `lubridate` package is used. + +As an example, let’s convert the processed bird logs csv file to a +sqlite database, called `example.sqlite` as a table `birdtracks`. Using +the default values for the preprocessing number of lines and the chunk +size, the conversion is as follows: ``` r library(inborutils) @@ -363,10 +490,20 @@ inborutils::csv_to_sqlite(csv_file = csv.name, chunk_size = 50000, show_progress_bar = FALSE) ``` -Hence, this approach will work for large files as well and is an ideal first step when doing this kind of analysis. Once performed, the SQlite database is available to query, similar to the previous examples: +Hence, this approach will work for large files as well and is an ideal +first step when doing this kind of analysis. Once performed, the SQlite +database is available to query, similar to the previous examples: ``` r my_db <- src_sqlite("example2.sqlite", create = FALSE) +``` + + ## Warning: `src_sqlite()` was deprecated in dplyr 1.0.0. + ## Please use `tbl()` directly with a database connection + ## This warning is displayed once every 8 hours. + ## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated. + +``` r bird_tracking <- tbl(my_db, "birdtracks") results <- bird_tracking %>% filter(device_info_serial == 860) %>% @@ -377,10 +514,10 @@ head(results) ``` ## # Source: lazy query [?? x 4] - ## # Database: sqlite 3.19.3 - ## # [/home/stijn_vanhoey/githubs/inbo_tutorials/content/tutorials/r_large_data_files_handling/example2.sqlite] + ## # Database: sqlite 3.36.0 + ## # [/Users/peter_desmet/Coding/Repositories/inbo/tutorials/content/tutorials/r_large_data_files_handling/example2.sqlite] ## date_time latitude longitude altitude - ## + ## ## 1 2014-03-10 12:43:37 44.0 -7.59 626 ## 2 2014-03-10 12:58:32 44.1 -7.67 405 ## 3 2014-03-10 13:13:52 44.1 -7.69 326 @@ -388,4 +525,5 @@ head(results) ## 5 2014-03-10 13:43:54 44.1 -7.72 174 ## 6 2014-03-10 13:59:06 44.1 -7.73 23 -Remark that the dates are properly handled, by making sure the date representation inside SQlite is the converted string version. +Remark that the dates are properly handled, by making sure the date +representation inside SQlite is the converted string version. diff --git a/content/tutorials/r_large_data_files_handling/index_files/figure-gfm/streamexample-1.png b/content/tutorials/r_large_data_files_handling/index_files/figure-gfm/streamexample-1.png new file mode 100644 index 0000000000000000000000000000000000000000..505456b5eaf90babadae75b09a5bf37d7394f02f GIT binary patch literal 24150 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�}pX*))0vrZJ9E~)d56fug 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 CywqI) literal 0 HcmV?d00001 diff --git a/content/tutorials/r_large_data_files_handling/index_files/figure-markdown_github/streamexample-1.png b/content/tutorials/r_large_data_files_handling/index_files/figure-markdown_github/streamexample-1.png deleted file mode 100644 index eec22b1e1808e7ec327b343731fd6307ef5ea73c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14669 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 some_value | origin ``` - a really long text - - text shorter than 80 characters but passed the 80 character limit due to the indentitation + - text shorter than 80 characters but passed the 80 character + limit due to the indentitation - solution: remove all indentation - text longer than 80 characters - solution: add `# nolint` at the end of the line -- functions from other packages with names that don't comply with this style guide +- functions from other packages with names that don’t comply with this + style guide - solution: add `# nolint` at the end of the line **Important notice** -Adding `# nolint` at the end of a line excludes that line from the automatic checks for coding styles. Therefore use it only when you have no other options. +Adding `# nolint` at the end of a line excludes that line from the +automatic checks for coding styles. Therefore use it only when you have +no other options. ### Functions @@ -186,17 +216,36 @@ sum <- function(x, y) { ### Validating syntax -The code below validate the syntax for an R file, an RMarkdown file or an R package. - -**RStudio hint**: Running this code within RStudio will open a *Markers* pane, indicating the filename, line number and the kind of syntax error that occurs. Double clicking on the error will open the file at the correct location, making it easy to rectify the problem. - -Extra hint: start correcting for the last lines and work your way forward. This leaves the line numbers of the errors intact until you solve them. - -An example to clarify this. Suppose you have an error at line 10 and an error at line 100. Both errors are `lines should not be more than 80 characters`, so to solve them we have to split the lines over multiple lines. - -Let say that we start with solving line 10 by splitting it over four lines. So the old line 10 becomes the new lines 10 to 13. Hence the old line 11 becomes the new line 14, and the old line 100 becomes the new line 103. When we now click on the marker for line 100, RStudio will go the current line 100 which is the old line 97. So you end up looking for an error at the wrong position. - -Starting at the back solved this issue. In the same example we would start by solving line 100. Let's assume we split this over two lines. So old line 100 because new line 100 and 101. Old line 101 becomes new line 102 but more importantly **all line numbers before 100 are unchanged**. So clicking on the marker for line 10 will take you the current line 10 which is the old line 10. +The code below validate the syntax for an R file, an RMarkdown file or +an R package. + +**RStudio hint**: Running this code within RStudio will open a *Markers* +pane, indicating the filename, line number and the kind of syntax error +that occurs. Double clicking on the error will open the file at the +correct location, making it easy to rectify the problem. + +Extra hint: start correcting for the last lines and work your way +forward. This leaves the line numbers of the errors intact until you +solve them. + +An example to clarify this. Suppose you have an error at line 10 and an +error at line 100. Both errors are +`lines should not be more than 80 characters`, so to solve them we have +to split the lines over multiple lines. + +Let say that we start with solving line 10 by splitting it over four +lines. So the old line 10 becomes the new lines 10 to 13. Hence the old +line 11 becomes the new line 14, and the old line 100 becomes the new +line 103. When we now click on the marker for line 100, RStudio will go +the current line 100 which is the old line 97. So you end up looking for +an error at the wrong position. + +Starting at the back solved this issue. In the same example we would +start by solving line 100. Let’s assume we split this over two lines. So +old line 100 because new line 100 and 101. Old line 101 becomes new line +102 but more importantly **all line numbers before 100 are unchanged**. +So clicking on the marker for line 10 will take you the current line 10 +which is the old line 10. ``` r # validate a single file @@ -207,8 +256,7 @@ lintr::lint(filename = "file.Rmd") lintr::lint_package(path = ".") ``` -Documentation -------------- +## Documentation ### Functions @@ -237,28 +285,35 @@ Documentation #' @return a description of the output from the function ``` -See for more information on Roxygen +See for more +information on Roxygen #### INBO extra requirements for package DESCRIPTION -- license: MIT or GPL-3? In case of MIT a LICENSE file should be added and `License: MIT` to the DESCRIPTION. In case of GPL-3 it is sufficient to add `License: GPL-3` to the DESCRIPTION +- license: MIT or GPL-3? In case of MIT a LICENSE file should be added + and `License: MIT` to the DESCRIPTION. In case of GPL-3 it is + sufficient to add `License: GPL-3` to the DESCRIPTION - list of authors in `Authors@R` format -- INBO is listed as copyright holder -- one or more roles are atributed to each person - - `cre`: package maintainer (only one person) - - `aut`: main author (at least one person) - - `ctb`: contributor (if relevant) - - `cph`: copyright holder (must be INBO) - -: c(person("Els", "Lommelen", email = "", role = c("aut", "cre")), person("Thierry", "Onkelinx", email = "", role = "aut"), person("Anja", "Leyman", email = "", role = "ctb"), person(family = "Research Institute for Nature and Forest (INBO)", email = "", role = "cph")) - -### How-to's - -- Add one or more how-to's to a package + - INBO is listed as copyright holder + - one or more roles are atributed to each person + - `cre`: package maintainer (only one person) + - `aut`: main author (at least one person) + - `ctb`: contributor (if relevant) + - `cph`: copyright holder (must be INBO) + +: c(person(“Els”, “Lommelen”, email = +“”, role = c(“aut”, “cre”)), person(“Thierry”, +“Onkelinx”, email = “”, role = “aut”), +person(“Anja”, “Leyman”, email = “”, role = “ctb”), +person(family = “Research Institute for Nature and Forest (INBO)”, email += “”, role = “cph”)) + +### How-to’s + +- Add one or more how-to’s to a package - Add them as RMarkdown vignettes -File structure --------------- +## File structure ### R Package @@ -266,20 +321,28 @@ File structure - all generic R functions should be distributed as an R package - use `devtools::create()` to start a new pacakge - - **RStudio hint**: *File > New project > New directory > R Package*: Type the name in *Package name* + - **RStudio hint**: *File > New project > New directory > + R Package*: Type the name in *Package name* - keep source files compact - - create a separate file for each function, with the file name equal to the function name. This makes it easy to find the correct source file. - - exception: very short auxilary functions with related functionality + - create a separate file for each function, with the file name + equal to the function name. This makes it easy to find the + correct source file. + - exception: very short auxilary functions with related + functionality - related functions can be bundled into one R script - - file name is either equal to the most important function or describes the related functionality + - file name is either equal to the most important function or + describes the related functionality - split large functions into several subfunctions #### Scripts - place scripts in the `inst` folder - - the scripts will be available for the user after installing the package - - the location of the scripts can be found with `system.file("script-name.R", package = "yourpackage")` - - use a relevant folder structure when adding lots of files to `inst` + - the scripts will be available for the user after installing the + package + - the location of the scripts can be found with + `system.file("script-name.R", package = "yourpackage")` + - use a relevant folder structure when adding lots of files to + `inst` #### Unit tests @@ -287,16 +350,25 @@ File structure - use `devtools::use_testthat()` to setup the test infrastructure - all unit tests are stored in `tests/testthat` - all files should have either a `test_` or `helper_` prefix - - files with `helper_` prefix contain auxiliary function for the tests but no tests + - files with `helper_` prefix contain auxiliary function for the + tests but no tests - the test files will be run in alphabetical order - - setting the order of the files is easy by adding 3 letters to the prefix (eg. `test_aaa_`, `test_baa`, `test_zzz_`) - - 3 letters offers quite some flexibility to insert new files at the correct location without having to rename at lot of files. If the first file is `test_aaa_` and the second `test_baa`, they you can 675 files between the two. + - setting the order of the files is easy by adding 3 letters to + the prefix (eg. `test_aaa_`, `test_baa`, `test_zzz_`) + - 3 letters offers quite some flexibility to insert new files at + the correct location without having to rename at lot of files. + If the first file is `test_aaa_` and the second `test_baa`, they + you can 675 files between the two. - unit test files can be larger than source files -- a unit test file can contain tests for several functions in case the functions are strongly related (e.g. subfunctions) and reuse test cases -- each package should contain the unit for coding style as listed below +- a unit test file can contain tests for several functions in case the + functions are strongly related (e.g. subfunctions) and reuse test + cases +- each package should contain the unit for coding style as listed + below - store this in a file `tests/testthat/test_zzz_coding_style.R` - add this file to `.gitignore` - - the coding style will be tested separately when using continuous integration + - the coding style will be tested separately when using + continuous integration ``` r if (requireNamespace("lintr", quietly = TRUE)) { @@ -309,54 +381,75 @@ if (requireNamespace("lintr", quietly = TRUE)) { #### Data -To make data available for users, they can be stored in a package in 3 different file types: +To make data available for users, they can be stored in a package in 3 +different file types: -- plain text file (`.txt`, `.csv`,...): use if +- plain text file (`.txt`, `.csv`,…): use if - your package is under version control and the data often change - you want to keep track on the changes using version control - consider to keep row and column order fixed - binary file (`.Rdata` or `.rda`): use if - - your dataset is large and data do not change between different versions + - your dataset is large and data do not change between different + versions - you are not interested in keeping track on the exact changes - - you want to keep the exact format of the data (e.g. factors with levels) (possible in plain text with [git2rdata](https://inbo.github.io/git2rdata)) -- code (`.r`) generating a table: use if the data can easily be generated with code + - you want to keep the exact format of the data (e.g. factors with + levels) (possible in plain text with + [git2rdata](https://inbo.github.io/git2rdata)) +- code (`.r`) generating a table: use if the data can easily be + generated with code Data can be stored in 3 places: -- to make data available for loading and parsing examples, store them in the folder `inst/extdata`. Access this data with `system.file("xyz", package = "abc")`. Possible for all data types. -- to make data available to package users, store them in the `data` folder. Access this data with `data(xyz)`. Possible only for data formats that can be handled by `data()`. Binary `.rda`-files can be stored by using `usethis::use_data(xyz)`. -- to keep data internal for use by your functions, store them in the file `R/Sysdata.rda` by using `usethis::use_data(xyz, internal = TRUE)`. Access this data with `abc::xyz`. - -(In the above examples, `xyz` are data and `abc` is the package in which they are stored.) - -Add scripts for generating these data in the folder `data-raw` and create this folder by using `usethis::use_data_raw()` (ignores folder during build). +- to make data available for loading and parsing examples, store them + in the folder `inst/extdata`. Access this data with + `system.file("xyz", package = "abc")`. Possible for all data types. +- to make data available to package users, store them in the `data` + folder. Access this data with `data(xyz)`. Possible only for data + formats that can be handled by `data()`. Binary `.rda`-files can be + stored by using `usethis::use_data(xyz)`. +- to keep data internal for use by your functions, store them in the + file `R/Sysdata.rda` by using + `usethis::use_data(xyz, internal = TRUE)`. Access this data with + `abc::xyz`. + +(In the above examples, `xyz` are data and `abc` is the package in which +they are stored.) + +Add scripts for generating these data in the folder `data-raw` and +create this folder by using `usethis::use_data_raw()` (ignores folder +during build). ### R script -- group a long set of commands with similar functionality into a dedicated function - - e.g. `prepare_data()`, `do_analysis()`, `create_figure()`, ... -- place the user defined functions in a separate file which you `source()` into the main script +- group a long set of commands with similar functionality into a + dedicated function + - e.g. `prepare_data()`, `do_analysis()`, `create_figure()`, … +- place the user defined functions in a separate file which you + `source()` into the main script - it is better to use the same file structure as an R package - - consider writing a simple package in case you have a lot of functions + - consider writing a simple package in case you have a lot of + functions ### RMarkdown -- each chunk has only one output (figure, table, summary, ...) -- don't mix (heavy) calculations and output in the same chunk: this is more interesting for caching the results -- give chunks a relevant name: this make debugging easier and file name of figures and Bookdown label will be based on the chunk name +- each chunk has only one output (figure, table, summary, …) +- don’t mix (heavy) calculations and output in the same chunk: this is + more interesting for caching the results +- give chunks a relevant name: this make debugging easier and file + name of figures and Bookdown label will be based on the chunk name - avoid writing code that generates Markdown - use (parametrised) child documents instead -- use the bookdown version for long reports: this makes it easy to split a long report into several child documents +- use the bookdown version for long reports: this makes it easy to + split a long report into several child documents -Recommended packages --------------------- +## Recommended packages ### Data import - `readr`: import text files - `readxl`: import Excel files - `googlesheets`: import Google Sheets -- `DBI`: connect to databases PostgreSQL, SQLite, MySQL, Oracle, ... +- `DBI`: connect to databases PostgreSQL, SQLite, MySQL, Oracle, … - `RODBC`: connect to databases SQL Server, Access ### Data manipulation & transformation From 2ad0621fc5eafa4ae7feea0030588bdc9d708910 Mon Sep 17 00:00:00 2001 From: peterdesmet Date: Thu, 27 Jan 2022 18:00:31 +0100 Subject: [PATCH 06/11] Remove erroneously included backslashes --- .../tutorials/r_citations_markdown/index.Rmd | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/content/tutorials/r_citations_markdown/index.Rmd b/content/tutorials/r_citations_markdown/index.Rmd index f31ebccba..0946326ba 100644 --- a/content/tutorials/r_citations_markdown/index.Rmd +++ b/content/tutorials/r_citations_markdown/index.Rmd @@ -118,7 +118,7 @@ To specify the style file for the Research Institute for Nature and Forest it is csl = "https://raw.githubusercontent.com/citation-style-language/styles/master/research-institute-for-nature-and-forest.csl") ``` -### Other YAML citation arguments {\#other-yaml-citation-arguments} +### Other YAML citation arguments {#other-yaml-citation-arguments} The [ymlthis field guide](https://ymlthis.r-lib.org/articles/yaml-fieldguide.html#citations-1), [Pandoc](https://pandoc.org/MANUAL.html#other-relevant-metadata-fields) & associated [citeproc](https://github.com/jgm/citeproc/blob/master/man/citeproc.1.md) documentation and [RStudio VME citations section](https://rstudio.github.io/visual-markdown-editing/#/citations) mention the following useful arguments: @@ -190,19 +190,19 @@ The defaults are OK. ![](global-options.png) -# Citing documents {\#citing-documents} +# Citing documents {#citing-documents} ## Syntax The following Markdown syntax is used to refer to documents. It is based on citation keys and the basic building block is `@citationkey`. -| syntax | result (depending on chosen csl style) | -|----------------------------------------------------------------------|------------------------------------------------------------------------| -| `@adams1975` concludes that ... | \@adams1975 concludes that ... | -| `@adams1975[p.33]` concludes that ... | \@adams1975 \[p.33\] concludes that ... | -| ... end of sentence `[@adams1975]`. | ... end of sentence \[\@adams1975\]. | -| ... end of sentence `[see @adams1975,p.33]`. | ... end of sentence \[see \@adams1975,p.33\]. | -| delineate multiple authors with colon: `[@adams1975; @aberdeen1958]` | delineate multiple authors with colon: \[\@adams1975; \@aberdeen1958\] | +| syntax | result (depending on chosen csl style) | +|----------------------------------------------------------------------|--------------------------------------------------------------------| +| `@adams1975` concludes that ... | @adams1975 concludes that ... | +| `@adams1975[p.33]` concludes that ... | @adams1975 [p.33] concludes that ... | +| ... end of sentence `[@adams1975]`. | ... end of sentence [@adams1975]. | +| ... end of sentence `[see @adams1975,p.33]`. | ... end of sentence [see @adams1975,p.33]. | +| delineate multiple authors with colon: `[@adams1975; @aberdeen1958]` | delineate multiple authors with colon: [@adams1975; @aberdeen1958] | ## Insert a citation From 580e6d5241fe7b03e1ac13a429106e2e7ecd09dd Mon Sep 17 00:00:00 2001 From: peterdesmet Date: Fri, 28 Jan 2022 14:35:53 +0100 Subject: [PATCH 07/11] Remove lines that cause error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The following lines caused an error in read.bib(): Error in charToDate(x) : character string is not in a standard unambiguous format @florisvdh removing the lines causes a warning (already better than an error), which also happens for 4 other entries (6 in total now): ignoring entry 'heijmans_spatial_2019' (line 106) because : A bibentry of bibtype ‘Book’ has to specify the field: publisher Can you fix this? --- content/articles/reproducible_research.bib | 2 -- 1 file changed, 2 deletions(-) diff --git a/content/articles/reproducible_research.bib b/content/articles/reproducible_research.bib index dc7f80f25..9597006c1 100644 --- a/content/articles/reproducible_research.bib +++ b/content/articles/reproducible_research.bib @@ -801,7 +801,6 @@ @book{heijmans_spatial_2019 @online{ropensci_contributors_reproducibility_2018, title = {Reproducibility {{Guide}}}, author = {{ROpenSci Contributors}}, - date = {2018}, url = {https://ropensci.github.io/reproducibility-guide/}, urldate = {2020-09-22} } @@ -810,7 +809,6 @@ @online{ropensci_contributors_reproducibility_2018 @online{national_center_for_ecological_analysis__synthesis_openscapes_2020, title = {Openscapes {{Resources}}}, author = {{National Center for Ecological Analysis \& Synthesis}}, - date = {2020}, url = {https://www.openscapes.org/resources/}, urldate = {2020-09-22}, langid = {american} From ade5366e885468a549c18e472558d10c2111a665 Mon Sep 17 00:00:00 2001 From: peterdesmet Date: Fri, 28 Jan 2022 16:18:57 +0100 Subject: [PATCH 08/11] Remove output settings for all index.md NOT generated by index.Rmd Also use 2 space indent --- content/articles/inbo_software/index.md | 4 ---- content/articles/inbo_stats_courses/index.md | 4 ---- content/installation/administrator/_index.md | 6 +++--- content/installation/user/_index.md | 6 +++--- content/tutorials/vignette_biorad/index.md | 4 ---- .../tutorials/vignette_checklist_getting_started/index.md | 4 ---- content/tutorials/vignette_checklist_philosophy/index.md | 4 ---- content/tutorials/vignette_checklist_zenodo/index.md | 4 ---- .../tutorials/vignette_effectclass_classification/index.md | 4 ---- .../tutorials/vignette_effectclass_visualisation/index.md | 4 ---- content/tutorials/vignette_etn_acoustic_telemetry/index.md | 4 ---- .../tutorials/vignette_frictionless_frictionless/index.md | 4 ---- content/tutorials/vignette_gwlogger_airpressure/index.md | 4 ---- .../tutorials/vignette_gwlogger_airpressure_drift/index.md | 4 ---- content/tutorials/vignette_gwlogger_gwlogger/index.md | 4 ---- content/tutorials/vignette_gwlogger_hydropressure/index.md | 4 ---- content/tutorials/vignette_inbodb_get_data_inboveg/index.md | 4 ---- content/tutorials/vignette_inbomd_introduction/index.md | 4 ---- .../vignette_inborutils_data_loaders_examples/index.md | 4 ---- .../tutorials/vignette_inborutils_gbif_name_match/index.md | 4 ---- .../tutorials/vignette_inborutils_guess_projection/index.md | 4 ---- content/tutorials/vignette_inlatools_distribution/index.md | 4 ---- content/tutorials/vignette_inlatools_prior/index.md | 4 ---- content/tutorials/vignette_inlatools_rwprior/index.md | 4 ---- .../tutorials/vignette_n2khab_v010_reference_lists/index.md | 4 ---- content/tutorials/vignette_n2khab_v020_datastorage/index.md | 4 ---- content/tutorials/vignette_n2khab_v022_example/index.md | 4 ---- .../tutorials/vignette_n2khab_v025_geospatial_hab/index.md | 4 ---- content/tutorials/vignette_n2khab_v030_GRTSmh/index.md | 4 ---- content/tutorials/vignette_rgbif_downloads/index.md | 4 ---- content/tutorials/vignette_rgbif_issues/index.md | 4 ---- content/tutorials/vignette_rgbif_taxonomic_names/index.md | 4 ---- .../vignette_waterinfo_define_date_periods/index.md | 4 ---- .../vignette_waterinfo_download_timeseries_batch/index.md | 4 ---- content/tutorials/vignette_waterinfo_waterinfo/index.md | 4 ---- content/tutorials/vignette_watina_v010_getstarted/index.md | 4 ---- content/tutorials/vignette_watina_v110_xg3/index.md | 4 ---- content/tutorials/vignette_watina_v210_chem/index.md | 4 ---- 38 files changed, 6 insertions(+), 150 deletions(-) diff --git a/content/articles/inbo_software/index.md b/content/articles/inbo_software/index.md index af6c8422b..d292c86eb 100644 --- a/content/articles/inbo_software/index.md +++ b/content/articles/inbo_software/index.md @@ -3,10 +3,6 @@ title: "Software by INBO: packages for environmentalists and ecologists!" date: 2020-12-03 categories: ["development", "r", "statistics", "databases"] tags: ["open science", "packages", "r", "python"] -output: - md_document: - preserve_yaml: true - variant: gfm --- At the Research Institute for Nature and Forest (INBO), we are eager to sustain, promote and develop open-source software that is relevant to biodiversity researchers! This page lists **R and Python packages** which INBO developed or made a significant contribution to. Several of these packages continue being developed. diff --git a/content/articles/inbo_stats_courses/index.md b/content/articles/inbo_stats_courses/index.md index b4a6783b0..465eb197c 100644 --- a/content/articles/inbo_stats_courses/index.md +++ b/content/articles/inbo_stats_courses/index.md @@ -5,10 +5,6 @@ authors: [hansvancalster] date: 2021-02-24 categories: ["r", "statistics"] tags: ["r", "INLA", "mixed model", "uncertainty", "explorative data analysis", "analysis of variance", "generalized linear regression", "multivariate statistics"] -output: - md_document: - preserve_yaml: true - variant: gfm --- During the course of the years, we have taught many statistics courses at the Research Institute for Nature and Forest (INBO), both for scientists and technicians. diff --git a/content/installation/administrator/_index.md b/content/installation/administrator/_index.md index 2b38e4a03..23c728e03 100644 --- a/content/installation/administrator/_index.md +++ b/content/installation/administrator/_index.md @@ -3,9 +3,9 @@ title: Administrator installation notes linkTitle: For admins date: 2017-10-18 menu: - sidebar: - parent: Installation - weight: 1 + sidebar: + parent: Installation + weight: 1 --- The list below contains all R related software which should be installed on the computers of useRs at INBO. Note that the installation process of most software requires administrator rights. diff --git a/content/installation/user/_index.md b/content/installation/user/_index.md index 9bc13b694..1b5c49917 100644 --- a/content/installation/user/_index.md +++ b/content/installation/user/_index.md @@ -3,9 +3,9 @@ title: User installation notes linkTitle: For users date: 2017-10-18 menu: - sidebar: - parent: Installation - weight: 2 + sidebar: + parent: Installation + weight: 2 --- Here a some pages which describe the steps that the users stil needs to do after an installation or upgrade. diff --git a/content/tutorials/vignette_biorad/index.md b/content/tutorials/vignette_biorad/index.md index 7bff51b0c..d7e230583 100644 --- a/content/tutorials/vignette_biorad/index.md +++ b/content/tutorials/vignette_biorad/index.md @@ -5,10 +5,6 @@ authors: [adokter, peterdesmet] date: 2019-05-07 categories: ["r"] tags: ["r", "vignette", "bioRad"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_checklist_getting_started/index.md b/content/tutorials/vignette_checklist_getting_started/index.md index a08c2fe2a..c2051edcd 100644 --- a/content/tutorials/vignette_checklist_getting_started/index.md +++ b/content/tutorials/vignette_checklist_getting_started/index.md @@ -5,10 +5,6 @@ authors: [thierryo] date: 2021-04-20 categories: ["r"] tags: ["r", "vignette", "checklist"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_checklist_philosophy/index.md b/content/tutorials/vignette_checklist_philosophy/index.md index b28fffda3..c30439acb 100644 --- a/content/tutorials/vignette_checklist_philosophy/index.md +++ b/content/tutorials/vignette_checklist_philosophy/index.md @@ -5,10 +5,6 @@ authors: [thierryo] date: 2021-04-20 categories: ["r"] tags: ["r", "vignette", "checklist"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_checklist_zenodo/index.md b/content/tutorials/vignette_checklist_zenodo/index.md index cff2ed7a2..a09133d0a 100644 --- a/content/tutorials/vignette_checklist_zenodo/index.md +++ b/content/tutorials/vignette_checklist_zenodo/index.md @@ -5,10 +5,6 @@ authors: [thierryo] date: 2022-01-12 categories: ["r"] tags: ["r", "vignette", "checklist"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_effectclass_classification/index.md b/content/tutorials/vignette_effectclass_classification/index.md index b307485e5..5997cf513 100644 --- a/content/tutorials/vignette_effectclass_classification/index.md +++ b/content/tutorials/vignette_effectclass_classification/index.md @@ -5,10 +5,6 @@ authors: [thierryo] date: 2020-04-20 categories: ["r"] tags: ["r", "vignette", "effectclass"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_effectclass_visualisation/index.md b/content/tutorials/vignette_effectclass_visualisation/index.md index 929eb1aaf..5f74ac0ee 100644 --- a/content/tutorials/vignette_effectclass_visualisation/index.md +++ b/content/tutorials/vignette_effectclass_visualisation/index.md @@ -5,10 +5,6 @@ authors: [thierryo] date: 2020-01-14 categories: ["r"] tags: ["r", "vignette", "effectclass"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_etn_acoustic_telemetry/index.md b/content/tutorials/vignette_etn_acoustic_telemetry/index.md index c70ccbe87..aaaedadea 100644 --- a/content/tutorials/vignette_etn_acoustic_telemetry/index.md +++ b/content/tutorials/vignette_etn_acoustic_telemetry/index.md @@ -5,10 +5,6 @@ authors: [damianooldoni] date: 2021-10-13 categories: ["r"] tags: ["r", "vignette", "etn"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_frictionless_frictionless/index.md b/content/tutorials/vignette_frictionless_frictionless/index.md index b1fa6d251..ad10769b2 100644 --- a/content/tutorials/vignette_frictionless_frictionless/index.md +++ b/content/tutorials/vignette_frictionless_frictionless/index.md @@ -5,10 +5,6 @@ authors: [peterdesmet] date: 2022-01-03 categories: ["r"] tags: ["r", "vignette", "frictionless"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_gwlogger_airpressure/index.md b/content/tutorials/vignette_gwlogger_airpressure/index.md index 8955c203c..96ccd953c 100644 --- a/content/tutorials/vignette_gwlogger_airpressure/index.md +++ b/content/tutorials/vignette_gwlogger_airpressure/index.md @@ -5,10 +5,6 @@ authors: [davorj] date: 2020-12-14 categories: ["r"] tags: ["r", "vignette", "gwloggeR"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_gwlogger_airpressure_drift/index.md b/content/tutorials/vignette_gwlogger_airpressure_drift/index.md index b628744f9..ed07329fd 100644 --- a/content/tutorials/vignette_gwlogger_airpressure_drift/index.md +++ b/content/tutorials/vignette_gwlogger_airpressure_drift/index.md @@ -5,10 +5,6 @@ authors: [davorj] date: 2020-12-14 categories: ["r"] tags: ["r", "vignette", "gwloggeR"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_gwlogger_gwlogger/index.md b/content/tutorials/vignette_gwlogger_gwlogger/index.md index 49c891f7d..6a5508304 100644 --- a/content/tutorials/vignette_gwlogger_gwlogger/index.md +++ b/content/tutorials/vignette_gwlogger_gwlogger/index.md @@ -5,10 +5,6 @@ authors: [davorj] date: 2020-12-14 categories: ["r"] tags: ["r", "vignette", "gwloggeR"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_gwlogger_hydropressure/index.md b/content/tutorials/vignette_gwlogger_hydropressure/index.md index 08d8bf23f..73da618ed 100644 --- a/content/tutorials/vignette_gwlogger_hydropressure/index.md +++ b/content/tutorials/vignette_gwlogger_hydropressure/index.md @@ -5,10 +5,6 @@ authors: [davorj] date: 2020-12-14 categories: ["r"] tags: ["r", "vignette", "gwloggeR"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_inbodb_get_data_inboveg/index.md b/content/tutorials/vignette_inbodb_get_data_inboveg/index.md index 84b5c67b6..f7e9750eb 100644 --- a/content/tutorials/vignette_inbodb_get_data_inboveg/index.md +++ b/content/tutorials/vignette_inbodb_get_data_inboveg/index.md @@ -5,10 +5,6 @@ authors: [elsdebie, hansvancalster, joloos] date: 2020-07-03 categories: ["r"] tags: ["r", "vignette", "inbodb"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_inbomd_introduction/index.md b/content/tutorials/vignette_inbomd_introduction/index.md index ce1246a9a..ed218c98a 100644 --- a/content/tutorials/vignette_inbomd_introduction/index.md +++ b/content/tutorials/vignette_inbomd_introduction/index.md @@ -5,10 +5,6 @@ authors: [thierryo] date: 2018-06-20 categories: ["r"] tags: ["r", "vignette", "INBOmd"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_inborutils_data_loaders_examples/index.md b/content/tutorials/vignette_inborutils_data_loaders_examples/index.md index 464fd40e5..61f56c1fa 100644 --- a/content/tutorials/vignette_inborutils_data_loaders_examples/index.md +++ b/content/tutorials/vignette_inborutils_data_loaders_examples/index.md @@ -5,10 +5,6 @@ authors: [stijnvanhoey] date: 2018-09-20 categories: ["r"] tags: ["r", "vignette", "inboRutils"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_inborutils_gbif_name_match/index.md b/content/tutorials/vignette_inborutils_gbif_name_match/index.md index 97e9b957a..ea423c5cb 100644 --- a/content/tutorials/vignette_inborutils_gbif_name_match/index.md +++ b/content/tutorials/vignette_inborutils_gbif_name_match/index.md @@ -5,10 +5,6 @@ authors: [stijnvanhoey, damianooldoni] date: 2019-07-25 categories: ["r"] tags: ["r", "vignette", "inboRutils"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_inborutils_guess_projection/index.md b/content/tutorials/vignette_inborutils_guess_projection/index.md index f0c64d676..e2cd7337b 100644 --- a/content/tutorials/vignette_inborutils_guess_projection/index.md +++ b/content/tutorials/vignette_inborutils_guess_projection/index.md @@ -5,10 +5,6 @@ authors: [stijnvanhoey] date: 2017-12-01 categories: ["r"] tags: ["r", "vignette", "inboRutils"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_inlatools_distribution/index.md b/content/tutorials/vignette_inlatools_distribution/index.md index 5dbf1b6b4..4f029739f 100644 --- a/content/tutorials/vignette_inlatools_distribution/index.md +++ b/content/tutorials/vignette_inlatools_distribution/index.md @@ -5,10 +5,6 @@ authors: [thierryo] date: 2019-01-21 categories: ["r"] tags: ["r", "vignette", "inlatools"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_inlatools_prior/index.md b/content/tutorials/vignette_inlatools_prior/index.md index 3bbd11fb1..0bb2202f9 100644 --- a/content/tutorials/vignette_inlatools_prior/index.md +++ b/content/tutorials/vignette_inlatools_prior/index.md @@ -5,10 +5,6 @@ authors: [thierryo] date: 2018-12-12 categories: ["r"] tags: ["r", "vignette", "inlatools"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_inlatools_rwprior/index.md b/content/tutorials/vignette_inlatools_rwprior/index.md index be195bd09..410185098 100644 --- a/content/tutorials/vignette_inlatools_rwprior/index.md +++ b/content/tutorials/vignette_inlatools_rwprior/index.md @@ -5,10 +5,6 @@ authors: [thierryo] date: 2019-01-21 categories: ["r"] tags: ["r", "vignette", "inlatools"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_n2khab_v010_reference_lists/index.md b/content/tutorials/vignette_n2khab_v010_reference_lists/index.md index c48b2b4bf..44fb4b2a6 100644 --- a/content/tutorials/vignette_n2khab_v010_reference_lists/index.md +++ b/content/tutorials/vignette_n2khab_v010_reference_lists/index.md @@ -5,10 +5,6 @@ authors: [florisvdh] date: 2019-05-06 categories: ["r"] tags: ["r", "vignette", "n2khab"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_n2khab_v020_datastorage/index.md b/content/tutorials/vignette_n2khab_v020_datastorage/index.md index 169ba1ba1..3cbfe7010 100644 --- a/content/tutorials/vignette_n2khab_v020_datastorage/index.md +++ b/content/tutorials/vignette_n2khab_v020_datastorage/index.md @@ -5,10 +5,6 @@ authors: [florisvdh] date: 2019-08-02 categories: ["r"] tags: ["r", "vignette", "n2khab"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_n2khab_v022_example/index.md b/content/tutorials/vignette_n2khab_v022_example/index.md index a9e4cf273..d0d12bfcb 100644 --- a/content/tutorials/vignette_n2khab_v022_example/index.md +++ b/content/tutorials/vignette_n2khab_v022_example/index.md @@ -5,10 +5,6 @@ authors: [florisvdh] date: 2020-04-10 categories: ["r"] tags: ["r", "vignette", "n2khab"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_n2khab_v025_geospatial_hab/index.md b/content/tutorials/vignette_n2khab_v025_geospatial_hab/index.md index b45c454b4..f73b6871e 100644 --- a/content/tutorials/vignette_n2khab_v025_geospatial_hab/index.md +++ b/content/tutorials/vignette_n2khab_v025_geospatial_hab/index.md @@ -5,10 +5,6 @@ authors: [florisvdh, toonwestra, janwouters, cecileherr] date: 2021-05-12 categories: ["r"] tags: ["r", "vignette", "n2khab"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_n2khab_v030_GRTSmh/index.md b/content/tutorials/vignette_n2khab_v030_GRTSmh/index.md index 7dad95e25..a3c8fb6bc 100644 --- a/content/tutorials/vignette_n2khab_v030_GRTSmh/index.md +++ b/content/tutorials/vignette_n2khab_v030_GRTSmh/index.md @@ -5,10 +5,6 @@ authors: [florisvdh] date: 2019-05-29 categories: ["r"] tags: ["r", "vignette", "n2khab"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_rgbif_downloads/index.md b/content/tutorials/vignette_rgbif_downloads/index.md index 1bd5780e3..6cc8ba7ff 100644 --- a/content/tutorials/vignette_rgbif_downloads/index.md +++ b/content/tutorials/vignette_rgbif_downloads/index.md @@ -5,10 +5,6 @@ authors: [sckott] date: 2021-06-11 categories: ["r"] tags: ["r", "vignette", "rgbif"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_rgbif_issues/index.md b/content/tutorials/vignette_rgbif_issues/index.md index 3d06a387c..68a5edd46 100644 --- a/content/tutorials/vignette_rgbif_issues/index.md +++ b/content/tutorials/vignette_rgbif_issues/index.md @@ -5,10 +5,6 @@ authors: [sckott] date: 2021-06-11 categories: ["r"] tags: ["r", "vignette", "rgbif"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_rgbif_taxonomic_names/index.md b/content/tutorials/vignette_rgbif_taxonomic_names/index.md index a4314d68d..92b2c5e09 100644 --- a/content/tutorials/vignette_rgbif_taxonomic_names/index.md +++ b/content/tutorials/vignette_rgbif_taxonomic_names/index.md @@ -5,10 +5,6 @@ authors: [sckott] date: 2021-06-11 categories: ["r"] tags: ["r", "vignette", "rgbif"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_waterinfo_define_date_periods/index.md b/content/tutorials/vignette_waterinfo_define_date_periods/index.md index a9af7933d..529bc7aa7 100644 --- a/content/tutorials/vignette_waterinfo_define_date_periods/index.md +++ b/content/tutorials/vignette_waterinfo_define_date_periods/index.md @@ -5,10 +5,6 @@ authors: [stijnvanhoey] date: 2017-10-20 categories: ["r"] tags: ["r", "vignette", "wateRinfo"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_waterinfo_download_timeseries_batch/index.md b/content/tutorials/vignette_waterinfo_download_timeseries_batch/index.md index 58555100c..3fe7cac4e 100644 --- a/content/tutorials/vignette_waterinfo_download_timeseries_batch/index.md +++ b/content/tutorials/vignette_waterinfo_download_timeseries_batch/index.md @@ -5,10 +5,6 @@ authors: [stijnvanhoey] date: 2017-10-20 categories: ["r"] tags: ["r", "vignette", "wateRinfo"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_waterinfo_waterinfo/index.md b/content/tutorials/vignette_waterinfo_waterinfo/index.md index 7c885aa94..aa1a4f2a3 100644 --- a/content/tutorials/vignette_waterinfo_waterinfo/index.md +++ b/content/tutorials/vignette_waterinfo_waterinfo/index.md @@ -5,10 +5,6 @@ authors: [stijnvanhoey] date: 2021-12-15 categories: ["r"] tags: ["r", "vignette", "wateRinfo"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_watina_v010_getstarted/index.md b/content/tutorials/vignette_watina_v010_getstarted/index.md index 249ccac0f..6279d02b0 100644 --- a/content/tutorials/vignette_watina_v010_getstarted/index.md +++ b/content/tutorials/vignette_watina_v010_getstarted/index.md @@ -5,10 +5,6 @@ authors: [florisvdh] date: 2021-01-14 categories: ["r"] tags: ["r", "vignette", "watina"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_watina_v110_xg3/index.md b/content/tutorials/vignette_watina_v110_xg3/index.md index b33ea8dd2..4b92dec3a 100644 --- a/content/tutorials/vignette_watina_v110_xg3/index.md +++ b/content/tutorials/vignette_watina_v110_xg3/index.md @@ -5,10 +5,6 @@ authors: [florisvdh] date: 2019-09-16 categories: ["r"] tags: ["r", "vignette", "watina"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at diff --git a/content/tutorials/vignette_watina_v210_chem/index.md b/content/tutorials/vignette_watina_v210_chem/index.md index 9ec32355a..8362317fb 100644 --- a/content/tutorials/vignette_watina_v210_chem/index.md +++ b/content/tutorials/vignette_watina_v210_chem/index.md @@ -5,10 +5,6 @@ authors: [florisvdh] date: 2019-09-16 categories: ["r"] tags: ["r", "vignette", "watina"] -output: - md_document: - preserve_yaml: true - variant: markdown_github --- See the vignette/tutorial at From 1e893b086d5bd41d703aa27d95e057e98155200e Mon Sep 17 00:00:00 2001 From: peterdesmet Date: Fri, 28 Jan 2022 16:37:37 +0100 Subject: [PATCH 09/11] Use gfm+footnotes in index.Rmd + knit Mostly only index.Rmd containing footnotes were knitted --- content/articles/communicating/index.Rmd | 2 +- content/articles/communicating/index.md | 14 +-- content/articles/computing/index.Rmd | 2 +- content/articles/computing/index.md | 26 ++--- .../articles/geospatial_standards/index.Rmd | 2 +- .../articles/geospatial_standards/index.md | 80 ++++++------- content/articles/open_science/index.Rmd | 2 +- content/articles/open_science/index.md | 11 +- content/articles/skills/index.Rmd | 2 +- content/articles/skills/index.md | 16 ++- content/articles/statistics/index.Rmd | 2 +- content/articles/statistics/index.md | 48 ++++---- .../administrator/admin_install_r/index.Rmd | 2 +- .../administrator/admin_install_r/index.md | 10 +- .../tutorials/r_citations_markdown/index.Rmd | 2 +- .../tutorials/r_citations_markdown/index.md | 32 +++++- content/tutorials/r_database_access/index.Rmd | 2 +- content/tutorials/r_database_access/index.md | 6 +- content/tutorials/r_fixed_random/index.Rmd | 2 +- content/tutorials/r_fixed_random/index.md | 6 +- .../tutorials/r_gbif_name_matching/index.Rmd | 2 +- .../tutorials/r_gbif_name_matching/index.md | 6 +- .../r_large_data_files_handling/index.Rmd | 2 +- .../r_large_data_files_handling/index.md | 2 +- content/tutorials/r_paired_t_test/index.Rmd | 2 +- content/tutorials/r_paired_t_test/index.md | 6 +- content/tutorials/r_script_sections/index.Rmd | 2 +- content/tutorials/r_script_sections/index.md | 2 +- .../r_setup_codingclub_session/index.Rmd | 2 +- .../r_setup_codingclub_session/index.md | 16 +-- content/tutorials/r_spde/index.Rmd | 2 +- content/tutorials/r_spde/index.md | 6 +- .../tutorials/r_tidyverse_piping/index.Rmd | 2 +- content/tutorials/r_tidyverse_piping/index.md | 12 +- content/tutorials/r_zero_inflation/index.Rmd | 2 +- content/tutorials/r_zero_inflation/index.md | 6 +- content/tutorials/r_zoom_in_ggplot/index.Rmd | 2 +- content/tutorials/r_zoom_in_ggplot/index.md | 11 +- .../spatial_create_leaflet_map/index.Rmd | 2 +- .../spatial_create_leaflet_map/index.md | 2 +- .../tutorials/spatial_crs_coding/index.Rmd | 6 +- content/tutorials/spatial_crs_coding/index.md | 106 +++++++++--------- .../spatial_point_in_polygon/index.Rmd | 2 +- .../spatial_point_in_polygon/index.md | 2 +- .../spatial_standards_raster/index.Rmd | 2 +- .../spatial_standards_raster/index.md | 7 +- .../spatial_standards_vector/index.Rmd | 2 +- .../spatial_standards_vector/index.md | 7 +- .../tutorials/spatial_transform_crs/index.Rmd | 2 +- .../tutorials/spatial_transform_crs/index.md | 6 +- .../spatial_transform_crs_2/index.Rmd | 2 +- .../spatial_transform_crs_2/index.md | 6 +- .../tutorials/spatial_wfs_services/index.Rmd | 2 +- .../tutorials/spatial_wfs_services/index.md | 6 +- .../tutorials/spatial_wms_services/index.Rmd | 2 +- .../tutorials/spatial_wms_services/index.md | 2 +- .../style_inbo_bibliography/index.Rmd | 2 +- .../style_inbo_bibliography/index.md | 6 +- content/tutorials/styleguide_r_code/index.Rmd | 2 +- content/tutorials/styleguide_r_code/index.md | 2 +- 60 files changed, 271 insertions(+), 261 deletions(-) diff --git a/content/articles/communicating/index.Rmd b/content/articles/communicating/index.Rmd index 917f3031f..c9cbef2d9 100644 --- a/content/articles/communicating/index.Rmd +++ b/content/articles/communicating/index.Rmd @@ -8,7 +8,7 @@ tags: ["literature", "open science"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- This page lists **selected** literature and online resources. Some are related to existing tutorial pages, while others are not. They are supposed to be of high interest to this site's users. diff --git a/content/articles/communicating/index.md b/content/articles/communicating/index.md index af9419aa2..f5d40853b 100644 --- a/content/articles/communicating/index.md +++ b/content/articles/communicating/index.md @@ -6,8 +6,9 @@ bibliography: ../reproducible_research.bib categories: ["literature"] tags: ["literature", "open science"] output: - md_document: - preserve_yaml: true + md_document: + preserve_yaml: true + variant: gfm+footnotes --- This page lists **selected** literature and online resources. Some are @@ -18,8 +19,7 @@ Several of the resources were added based on an inspiring [talk](https://docs.google.com/presentation/d/10KkXEv4r3wWtdKvB6RFOPe809eMNldODaRqQxn-jeME/edit?usp=sharing) by Julia Lowndes at the SAFRED conference, Brussels, 27 Feb 2018. -Sharing data ------------- +## Sharing data - Ellis & Leek (2017): guidelines for **providing data** to a scientist / statistician: provide raw data, format consistently, @@ -30,14 +30,12 @@ Sharing data and considerations to be made - Perkel (2016): **data repository sites** like github and others -Communicating -------------- +## Communicating - Smith *et al.* (2016): recommendations of the FORCE11 Software Citation Working Group -Bibliography ------------- +## Bibliography Culina A., Baglioni M., Crowther T.W., Visser M.E., Woutersen-Windhouwer S. & Manghi P. (2018). Navigating the unfolding open data landscape in diff --git a/content/articles/computing/index.Rmd b/content/articles/computing/index.Rmd index 23a0c4dfe..9248f1eae 100644 --- a/content/articles/computing/index.Rmd +++ b/content/articles/computing/index.Rmd @@ -8,7 +8,7 @@ tags: ["literature", "open science"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- This page lists **selected** literature and online resources. Some are related to existing tutorial pages, while others are not. They are supposed to be of high interest to this site's users. diff --git a/content/articles/computing/index.md b/content/articles/computing/index.md index 5d622b00b..019f894c4 100644 --- a/content/articles/computing/index.md +++ b/content/articles/computing/index.md @@ -6,9 +6,9 @@ bibliography: ../reproducible_research.bib categories: ["literature"] tags: ["literature", "open science"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm+footnotes --- This page lists **selected** literature and online resources. Some are @@ -21,19 +21,19 @@ by Julia Lowndes at the SAFRED conference, Brussels, 27 Feb 2018. ## Overviews - - Wilson *et al.* (2017): set of **good computing practices** that +- Wilson *et al.* (2017): set of **good computing practices** that every researcher can adopt - - British Ecological Society (2014): planning the **data life cycle**; +- British Ecological Society (2014): planning the **data life cycle**; creating, processing, documenting, preserving, sharing & reusing data - - Goudeseune *et al.* (2019): **open data management**, data +- Goudeseune *et al.* (2019): **open data management**, data management plan, repositories, standards and licenses - - Cooper & Hsing (2017): file organisation, workflow documentation, +- Cooper & Hsing (2017): file organisation, workflow documentation, **code** reproducibility and readability, writing reproducible reports, version control and code archiving - - Marwick *et al.* (2018): the **research compendium** as a solution +- Marwick *et al.* (2018): the **research compendium** as a solution to share research in a reproducible way - - Ibanez *et al.* (2014): vision on reproducible science, routine +- Ibanez *et al.* (2014): vision on reproducible science, routine **practices**, collaboration, literate computing See also some resources related to [learning and education](../skills) @@ -41,14 +41,14 @@ and the [discipline of open and reproducible science](../open_science). ## Specific tools - - Ross *et al.* (2017): about **tidyverse** workflow and tools - - : website of the tidyverse **packages** +- Ross *et al.* (2017): about **tidyverse** workflow and tools +- : website of the tidyverse **packages** ## Focus on version control workflows - - Bryan (2017): rationale, workflows and tools regarding version +- Bryan (2017): rationale, workflows and tools regarding version control for project organization - - Bryan *et al.* (2019): getting started with git and github workflows +- Bryan *et al.* (2019): getting started with git and github workflows in RStudio ## Bibliography diff --git a/content/articles/geospatial_standards/index.Rmd b/content/articles/geospatial_standards/index.Rmd index 2a1fcaef5..ba82ff0db 100644 --- a/content/articles/geospatial_standards/index.Rmd +++ b/content/articles/geospatial_standards/index.Rmd @@ -10,7 +10,7 @@ tags: ["gis", "r", "open science"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- Some inspiration for this post came from the beautiful books of @lovelace_geocomputation_2020, @pebesma_edzer_spatial_2019 and @heijmans_spatial_2019, and from various websites. diff --git a/content/articles/geospatial_standards/index.md b/content/articles/geospatial_standards/index.md index 28ea6e451..29b9dba9a 100644 --- a/content/articles/geospatial_standards/index.md +++ b/content/articles/geospatial_standards/index.md @@ -8,9 +8,9 @@ bibliography: ../reproducible_research.bib categories: ["r", "gis"] tags: ["gis", "r", "open science"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm+footnotes --- Some inspiration for this post came from the beautiful books of Lovelace @@ -19,25 +19,25 @@ various websites. ## Why use open standards? - - Open file standards ease collaboration, portability and +- Open file standards ease collaboration, portability and compatibility between users, machines and applications. - - Their (file) structure is fully documented. - - Consequently, scientists and programmers can build new software +- Their (file) structure is fully documented. + - Consequently, scientists and programmers can build new software / packages and make innovations that use these standards, while maintaining interoperability with existing applications. - - And, there is a much higher chance that your data will still be + - And, there is a much higher chance that your data will still be readable in a hundred years from now. The standard’s open documentation makes it relatively easy to build tools that can - read an ancient open-standard file\! + read an ancient open-standard file! -Luckily, quite a list of open standards is available\! Below, some +Luckily, quite a list of open standards is available! Below, some powerful and widely-used single-file formats are introduced. Single-file data sources are readily amenable to exchange and publication. I see you can’t wait to start practicing, so you can also head straight over to the [tutorial on vector formats](../../tutorials/spatial_standards_vector/) and the [tutorial on -raster formats](../../tutorials/spatial_standards_raster/)\! In these +raster formats](../../tutorials/spatial_standards_raster/)! In these tutorials, a comparison table of vector/raster file formats is also presented. @@ -46,9 +46,9 @@ presented. **[GDAL](https://gdal.org)** (Geospatial Data Abstraction Library) is by far the most used collection of open-source drivers for: - - a lot of [raster](https://gdal.org/drivers/raster/index.html) +- a lot of [raster](https://gdal.org/drivers/raster/index.html) formats; - - a lot of [vector](https://gdal.org/drivers/vector/index.html) +- a lot of [vector](https://gdal.org/drivers/vector/index.html) formats. In other words, it is the preferred workhorse for reading and writing @@ -62,19 +62,19 @@ So, in R we use packages that use GDAL in the background, such as ## The GeoPackage file format - - Its website is . - - It is a standardized implementation of an SQLite database for +- Its website is . +- It is a standardized implementation of an SQLite database for geospatial data. Hence, a GeoPackage is a **binary** file (`filename.gpkg`). It shares this property with shapefiles, which - however pose multiple limitations,\[1\] so the GeoPackage is a more + however pose multiple limitations,[^1] so the GeoPackage is a more than suitable replacement. - - The GeoPackage can store one or *multiple* **vector** layers +- The GeoPackage can store one or *multiple* **vector** layers (points, lines, polygons and related feature types). Besides vector data, it can also store **raster** data or extra standalone **tables**. These properties make it somehow comparable to the ‘personal geodatabase’ of ArcGIS – ESRI’s closed, Windows-only - format.\[2\] - - The GeoPackage standard is + format.[^2] +- The GeoPackage standard is [maintained](https://www.opengeospatial.org/standards/geopackage) by the [Open Geospatial Consortium](https://www.opengeospatial.org/) (OGC), which stands out as a reference when it comes to open @@ -82,7 +82,7 @@ So, in R we use packages that use GDAL in the background, such as ## The GeoJSON file format - - One [GeoJSON](https://tools.ietf.org/html/rfc7946) file +- One [GeoJSON](https://tools.ietf.org/html/rfc7946) file (`filename.geojson`) contains *one* **vector** layer. Note that one vector layer can combine different [feature geometry types](https://r-spatial.github.io/sf/articles/sf1.html#simple-feature-geometry-types), @@ -94,32 +94,32 @@ So, in R we use packages that use GDAL in the background, such as example). GeoJSON adds the necessary specification to JSON for standardized storage of geographic feature data, but it is still a plain JSON text file. - - The GeoJSON standard is maintained by the Internet Engineering Task +- The GeoJSON standard is maintained by the Internet Engineering Task Force ([IETF](https://www.ietf.org/)), a large open standards organization that develops Internet standards under the auspices of the Internet Society. - - Although the previous version of the GeoJSON standard – GeoJSON 2008 +- Although the previous version of the GeoJSON standard – GeoJSON 2008 – is still a lot in use, it is [obsoleted](http://geojson.org/geojson-spec.html) and a new version **[RFC7946](https://tools.ietf.org/html/rfc7946)** is establishing. - - This version is strict about the coordinate reference system + - This version is strict about the coordinate reference system (CRS) – it is always [WGS84](https://epsg.io/4326) – and it also differs on a few other aspects (such as the recommendation for applications [not to inflate](https://tools.ietf.org/html/rfc7946#section-11.2) decimal coordinate precision). - - RFC7946 solves the problem that quite a few libraries – + - RFC7946 solves the problem that quite a few libraries – including GDAL – simply assumed WGS84 in GeoJSON 2008 (without checking or transforming), even though WGS84 was not a requirement of GeoJSON 2008 (it did support an explicit *crs* declaration). This resulted in inconveniences (cf. [this post](https://github.com/r-spatial/sf/issues/344#issue-229118527) in the `sf`-repository). - - A [specific + - A [specific section](https://gdal.org/drivers/vector/geojson.html#rfc-7946-write-support) in the documentation of GDAL’s GeoJSON driver gives a summary of the differences between both GeoJSON versions. - - While GDAL by default still follows the GeoJSON 2008 format,\[3\] +- While GDAL by default still follows the GeoJSON 2008 format,[^3] RFC7946 is supported by the option `RFC7946=YES`. Here, reprojection to WGS84 will happen automatically. It applies 7 decimal places for coordinates, i.e. approximately 1 cm. Given the advantages, ***we @@ -127,23 +127,23 @@ So, in R we use packages that use GDAL in the background, such as the user to provide options that are passed to GDAL, so we can ask to deliver RFC7946 (see the [tutorial](../../tutorials/spatial_standards_vector/)). - - In order to keep it manageable (text file size, usage in versioning - systems\[4\] ) it can be wise to use GeoJSON for more simple cases +- In order to keep it manageable (text file size, usage in versioning + systems[^4] ) it can be wise to use GeoJSON for more simple cases (points and rather simple lines and polygons), and use the binary GeoPackage format for larger (more complex) cases. ## The GeoTIFF file format - - [GeoTIFF](https://en.wikipedia.org/wiki/GeoTIFF) is the preferred +- [GeoTIFF](https://en.wikipedia.org/wiki/GeoTIFF) is the preferred single-file open standard for **raster** data. It adheres to the open [TIFF](https://en.wikipedia.org/wiki/TIFF) specification; hence it is a TIFF image file (`filename.tif`). It [uses](http://docs.opengeospatial.org/is/19-008r4/19-008r4.html#_geotiff_file_structure_and_geotiff_crs_and_models_principles_informative) a small set of reserved TIFF tags to store information about CRS, extent and resolution of the raster. - - A GeoTIFF file can contain *one* or *multiple* rasters with the same +- A GeoTIFF file can contain *one* or *multiple* rasters with the same CRS, extent and resolution. - - The GeoTIFF standard is +- The GeoTIFF standard is [maintained](https://www.opengeospatial.org/standards/geotiff) by the [Open Geospatial Consortium](https://www.opengeospatial.org/) (OGC), which stands out as a reference when it comes to open @@ -175,21 +175,21 @@ Pebesma E. & Bivand R. (2019). Spatial Data Science. -1. Some problems with shapefiles are: they’re not an open format, they - consist of multiple files and they have restrictions regarding file - size, column name length, number of columns and the feature types - that can be accommodated. +[^1]: Some problems with shapefiles are: they’re not an open format, + they consist of multiple files and they have restrictions regarding + file size, column name length, number of columns and the feature + types that can be accommodated. -2. Note that personal geodatabases have their size limited to 250-500 - MB; a GeoPackage can have a size of about 140 TB if the filesystem - can handle it. +[^2]: Note that personal geodatabases have their size limited to + 250-500 MB; a GeoPackage can have a size of about 140 TB if the + filesystem can handle it. -3. Though GeoJSON 2008 is obsoleted, the now recommended RFC7946 +[^3]: Though GeoJSON 2008 is obsoleted, the now recommended RFC7946 standard is still officially in a *proposal* stage. That is probably the reason why GDAL does not yet default to RFC7946. A somehow confusing stage, it seems. -4. When versioning GeoJSON files, mind the order of your data when +[^4]: When versioning GeoJSON files, mind the order of your data when rewriting them: reordering could produce large diffs. Interested in combining GeoJSON and GitHub? [Surprise - yourself](https://github.com/lyzidiamond/learn-geojson)\! + yourself](https://github.com/lyzidiamond/learn-geojson)! diff --git a/content/articles/open_science/index.Rmd b/content/articles/open_science/index.Rmd index 9e9c63a4a..923bd7242 100644 --- a/content/articles/open_science/index.Rmd +++ b/content/articles/open_science/index.Rmd @@ -8,7 +8,7 @@ tags: ["literature", "open science"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- This page lists **selected** literature and online resources. Some are related to existing tutorial pages, while others are not. They are supposed to be of high interest to this site's users. diff --git a/content/articles/open_science/index.md b/content/articles/open_science/index.md index 3cf27ab6b..99af0e3bb 100644 --- a/content/articles/open_science/index.md +++ b/content/articles/open_science/index.md @@ -6,8 +6,9 @@ bibliography: ../reproducible_research.bib categories: ["literature"] tags: ["literature", "open science"] output: - md_document: - preserve_yaml: true + md_document: + preserve_yaml: true + variant: gfm+footnotes --- This page lists **selected** literature and online resources. Some are @@ -29,8 +30,7 @@ computing workflows](../computing). - Donati & Woolston (2017): how data science is becoming a large discipline -Focus on reproducible research ------------------------------- +## Focus on reproducible research - Stodden *et al.* (2014): **book** on computational reproducibility and (experiment) replicability; the three parts are *Tools*, @@ -42,8 +42,7 @@ Focus on reproducible research - ROpenSci Contributors (2018): a comprehensive **overview** of aspects and R-oriented tools in reproducible research -Bibliography ------------- +## Bibliography Begley C.G., Buchan A.M. & Dirnagl U. (2015). Institutions must do their part for reproducibility. Nature 525 (7567): 25–27. diff --git a/content/articles/skills/index.Rmd b/content/articles/skills/index.Rmd index 33e5aa0a1..0a408f237 100644 --- a/content/articles/skills/index.Rmd +++ b/content/articles/skills/index.Rmd @@ -8,7 +8,7 @@ tags: ["literature", "open science"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- This page lists **selected** literature and online resources. Some are related to existing tutorial pages, while others are not. They are supposed to be of high interest to this site's users. diff --git a/content/articles/skills/index.md b/content/articles/skills/index.md index 60404204a..230b84463 100644 --- a/content/articles/skills/index.md +++ b/content/articles/skills/index.md @@ -6,8 +6,9 @@ bibliography: ../reproducible_research.bib categories: ["literature"] tags: ["literature", "open science"] output: - md_document: - preserve_yaml: true + md_document: + preserve_yaml: true + variant: gfm+footnotes --- This page lists **selected** literature and online resources. Some are @@ -22,8 +23,7 @@ These resources focus on the learning and teaching aspect, while they often also give an overview of [scientific computing workflows](../computing). -Open data science in general ----------------------------- +## Open data science in general - Lowndes *et al.* (2017): **learning** open data science tools - Hampton *et al.* (2017): **training approaches and needed skills** @@ -33,8 +33,7 @@ Open data science in general - National Center for Ecological Analysis & Synthesis (2020): **resources** for learning, collaborating and inspiring others -In relation to statistics teaching ----------------------------------- +## In relation to statistics teaching - Kaplan (2017): ten organizing blocks for **introductory statistics teaching** in the present data science context @@ -42,8 +41,7 @@ In relation to statistics teaching toolkit choices** to allow for the necessary pedagogical innovations in statistics education -Bibliography ------------- +## Bibliography Cetinkaya-Rundel M. & Rundel C.W. (2017). Infrastructure and tools for teaching computing throughout the statistical curriculum. PeerJ @@ -61,7 +59,7 @@ e3205v1. . Lowndes J.S.S., Best B.D., Scarborough C., Afflerbach J.C., Frazier M.R., O’Hara C.C., Jiang N. & Halpern B.S. (2017). Our path to better science in less time using open data science tools. Nature Ecology & -Evolution 1 (6): s41559–017–0160–017. +Evolution 1 (6): s41559-017-0160-017. . National Center for Ecological Analysis & Synthesis (2020). Openscapes diff --git a/content/articles/statistics/index.Rmd b/content/articles/statistics/index.Rmd index 7e641c889..9d03240f4 100644 --- a/content/articles/statistics/index.Rmd +++ b/content/articles/statistics/index.Rmd @@ -8,7 +8,7 @@ tags: ["literature", "open science"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ```{r setup, include = FALSE} diff --git a/content/articles/statistics/index.md b/content/articles/statistics/index.md index e4c00e51c..3dcb309a7 100644 --- a/content/articles/statistics/index.md +++ b/content/articles/statistics/index.md @@ -6,15 +6,16 @@ bibliography: ../reproducible_research.bib categories: ["literature"] tags: ["literature", "open science"] output: - md_document: - preserve_yaml: true + md_document: + preserve_yaml: true + variant: gfm+footnotes --- - McElreath (2015): Statistical Rethinking is an introduction to applied Bayesian data analysis, aimed at PhD students and researchers in the natural and social sciences. This audience has had some calculus and linear algebra, and one or two joyless - undergraduate courses in statistics. I've been teaching applied + undergraduate courses in statistics. I’ve been teaching applied statistics to this audience for about a decade now, and this book has evolved from that experience. The book teaches generalized linear multilevel modeling (GLMMs) from a Bayesian perspective, @@ -28,7 +29,7 @@ output: Theory is explained through simulation exercises, using R code. And modeling examples are fully worked, with R code displayed within the main text. Mathematical depth is given in optional - {"}overthinking{"} boxes throughout. + {“}overthinking{”} boxes throughout. - Kass *et al.* (2016): The authors propose a set of 10 simple rules for effective statistical practice @@ -82,7 +83,7 @@ output: interpretation of experimental data through the use of statistical methods. This unique textbook aims to demystify statistical formulae for the average biology student. Written in a lively and engaging - style, Statistics for Terrified Biologists draws on the author's 30 + style, Statistics for Terrified Biologists draws on the author’s 30 years of lecturing experience. One of the foremost entomologists of his generation, van Emden has an extensive track record for successfully teaching statistical methods to even the most guarded @@ -113,7 +114,7 @@ output: - van Belle (2008): This book contains chapters titled: - - Begin with a Basic Formula for Sample Size–Lehr's Equation + - Begin with a Basic Formula for Sample Size–Lehr’s Equation - Calculating Sample Size Using the Coefficient of Variation - Ignore the Finite Population Correction in Calculating Sample Size for a Survey @@ -125,7 +126,7 @@ output: - Sample Size Calculation for Poisson Distribution with Background Rate - Sample Size Calculation for the Binomial Distribution - - When Unequal Sample Sizes Matter; When They Don't \* Determining + - When Unequal Sample Sizes Matter; When They Don’t \* Determining Sample Size when there are Different Costs Associated with the Two Samples - Use the Rule of Threes for 95% Upper Bounds when there Have Been @@ -133,17 +134,17 @@ output: - Sample Size Calculations Should be Based on the Way the Data will be Analyzed -- Grolemund & Wickham (2016): This is the website for {"}R for Data - Science{"}. This book will teach you how to do data science with R: - You'll learn how to get your data into R, get it into the most +- Grolemund & Wickham (2016): This is the website for {“}R for Data + Science{”}. This book will teach you how to do data science with R: + You’ll learn how to get your data into R, get it into the most useful structure, transform it, visualise it and model it. In this book, you will find a practicum of skills for data science. Just as - a chemist learns how to clean test tubes and stock a lab, you'll + a chemist learns how to clean test tubes and stock a lab, you’ll learn how to clean data and draw plots—and many other things besides. These are the skills that allow data science to happen, and here you will find the best practices for doing each of these things - with R. You'll learn how to use the grammar of graphics, literate - programming, and reproducible research to save time. You'll also + with R. You’ll learn how to use the grammar of graphics, literate + programming, and reproducible research to save time. You’ll also learn how to manage cognitive resources to facilitate discoveries when wrangling, visualising, and exploring data. @@ -164,7 +165,7 @@ output: non-parametric estimation of intensity, correlation, and spacing properties. The third part discusses model-fitting and statistical inference for point patterns. The final part describes point - patterns with additional {"}structure,{"} such as complicated marks, + patterns with additional {“}structure,{”} such as complicated marks, space-time observations, three- and higher-dimensional spaces, replicated observations, and point patterns constrained to a network of lines. Easily Analyze Your Own Data Throughout the book, the @@ -172,7 +173,7 @@ output: written in the R language. This package provides a wide range of capabilities for spatial point pattern data, from basic data handling to advanced analytic tools. The book focuses on practical - needs from the user's perspective, offering answers to the most + needs from the user’s perspective, offering answers to the most frequently asked questions in each chapter. - Hobbs & Hooten (2015): Bayesian modeling has become an indispensable @@ -257,7 +258,7 @@ output: address this issue within the context of visualizing environmental data, we list ten guidelines for effective data visualization in scientific publications. These guidelines support the primary - objective of data visualization, i.e. to effectively convey + objective of data visualization, i.e. to effectively convey information. We believe that this small set of guidelines based on a review of key visualization literature can help researchers improve the communication of their results using effective visualization. @@ -265,7 +266,7 @@ output: research presentation and communication within and across disciplines. -- Lohr (2010): Sharon L. Lohr's SAMPLING: DESIGN AND ANALYSIS, 2ND +- Lohr (2010): Sharon L. Lohr’s SAMPLING: DESIGN AND ANALYSIS, 2ND EDITION, provides a modern introduction to the field of survey sampling intended for a wide audience of statistics students. Practical and authoritative, the book is listed as a standard @@ -337,7 +338,7 @@ output: a wide variety of models, whilst at the same time instructing the reader in how to fit these models using available software packages. The book illustrates the concepts by working through scores of real - data examples that have arisen from the authors' own applied + data examples that have arisen from the authors’ own applied research, with programming codes provided for each one. Topics covered include causal inference, including regression, poststratification, matching, regression discontinuity, and @@ -353,7 +354,7 @@ output: programs. Short and to the point, it illustrates key aspects with case studies and examples. It is based on the collective experience of running long-term research and monitoring programs of the two - authors -- experience which spans more than 70 years. The book first + authors – experience which spans more than 70 years. The book first outlines why long-term monitoring is important, then discusses why long-term monitoring programs often fail. The authors then highlight what makes good and effective monitoring. These good and bad aspects @@ -374,7 +375,7 @@ output: confidence limits, and interpret the results. The book also covers statistical frameworks, the philosophy of statistical modeling, and critical mathematical functions and probability distributions. It - requires no programming background--only basic calculus and + requires no programming background–only basic calculus and statistics. - Practical, beginner-friendly introduction to modern statistical @@ -382,13 +383,12 @@ output: - Step-by-step instructions for fitting models to messy, real-world data - Balanced view of different statistical approaches - - Wide coverage of techniques -- from simple (distribution - fitting) to complex (state-space modeling) + - Wide coverage of techniques – from simple (distribution fitting) + to complex (state-space modeling) - Techniques for data manipulation and graphical display - Companion Web site with data and R code for all examples -Bibliography ------------- +## Bibliography Agresti A. (2002). Categorical Data Analysis (Second Edition). John Wiley & Sons, Inc. diff --git a/content/installation/administrator/admin_install_r/index.Rmd b/content/installation/administrator/admin_install_r/index.Rmd index b07fec604..78448ad35 100644 --- a/content/installation/administrator/admin_install_r/index.Rmd +++ b/content/installation/administrator/admin_install_r/index.Rmd @@ -8,7 +8,7 @@ tags: ["r", "installation"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ```{r include = FALSE} diff --git a/content/installation/administrator/admin_install_r/index.md b/content/installation/administrator/admin_install_r/index.md index f9974766b..40c96e07d 100644 --- a/content/installation/administrator/admin_install_r/index.md +++ b/content/installation/administrator/admin_install_r/index.md @@ -6,9 +6,9 @@ authors: [thierryo] categories: ["installation"] tags: ["r", "installation"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm+footnotes --- ## Windows @@ -42,7 +42,7 @@ voor versie `R-4.0.0` is `x` = 0 en `y` = 0. `De omgevingsvariabelen van het systeem bewerken`. Selecteer het tabblad `Geavanceerd` en klik op de knop `Omgevingsvariabelen`. Ga na of er een systeemvariabele `R_LIBS_USER` met waarde - `C:/R/library` bestaat[1]. Indien niet, maak deze aan met de knop + `C:/R/library` bestaat[^1]. Indien niet, maak deze aan met de knop `Nieuw`. Sluit al deze schermen via de `OK` knop. 12. Kopieer het bestand [`Rprofile.site`](Rprofile.site) naar `etc` in de doelmap waar je R geïnstalleerd hebt (`C:\R\R-4.x.y`). Hierbij @@ -161,4 +161,4 @@ Start `R` als een gewone gebruiker om de configuratie te testen. sudo apt-get update sudo apt-get install -y r-base r-base-dev libcurl4-openssl-dev libssl-dev libssh2-1-dev libxml2-dev -[1] Het moeten forward slashes zijn. +[^1]: Het moeten forward slashes zijn. diff --git a/content/tutorials/r_citations_markdown/index.Rmd b/content/tutorials/r_citations_markdown/index.Rmd index 0946326ba..2bf7bc35b 100644 --- a/content/tutorials/r_citations_markdown/index.Rmd +++ b/content/tutorials/r_citations_markdown/index.Rmd @@ -12,7 +12,7 @@ csl: https://raw.githubusercontent.com/citation-style-language/styles/master/res output: md_document: preserve_yaml: true - variant: gfm+definition_lists + variant: gfm+footnotes+definition_lists editor_options: markdown: wrap: sentence diff --git a/content/tutorials/r_citations_markdown/index.md b/content/tutorials/r_citations_markdown/index.md index 2b280ce13..366c7d45e 100644 --- a/content/tutorials/r_citations_markdown/index.md +++ b/content/tutorials/r_citations_markdown/index.md @@ -10,9 +10,9 @@ link-citations: true reference-section-title: References csl: https://raw.githubusercontent.com/citation-style-language/styles/master/research-institute-for-nature-and-forest.csl output: - md_document: - preserve_yaml: true - variant: gfm+definition_lists + md_document: + preserve_yaml: true + variant: gfm+footnotes+definition_lists editor_options: markdown: wrap: sentence @@ -35,7 +35,7 @@ More general tutorials can be found at the following web pages: The latter webpage is part of the documentation about the Visual Markdown Editing (**VME**) mode that is available since RStudio 1.4+ as an alternative to writing R Markdown documents in source mode. VME is a -what-you-see-is-what-you-get[1] interface for interacting with R +what-you-see-is-what-you-get[^1] interface for interacting with R Markdown. This interface is similar to writing documents in word processing software (google docs, MS Word, …). Moreover, the VME mode has more functionalities for citations than the source mode. To switch @@ -65,13 +65,13 @@ CSL-YAML, BibTex and EndNote. We strongly recommend however to [use CSL-JSON or CSL-YAML](https://rmarkdown.rstudio.com/authoring_bibliographies_and_citations.html), -since CSL is the native format for Pandoc.[2] All other bibliographic +since CSL is the native format for Pandoc.[^2] All other bibliographic formats are internally converted to CSL-JSON, but with the exception of CSL-YAML this can in general not be perfect. Compared to CSL-JSON, Pandoc’s CSL-YAML has identical contents while having the most human-friendly syntax. [CSL-JSON](https://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html) -is the formal standard supported by all CSL processors[3] . +is the formal standard supported by all CSL processors[^3] . Some example specifications: @@ -379,3 +379,23 @@ which is implemented e.g. in Zotero and Mendeley; the citeproc-js project has also formulated the CSL-JSON standard. Pandoc, the document conversion software used by R Markdown, uses its own [citeproc](https://hackage.haskell.org/package/citeproc) CSL processor. +[^1]: Commonly abbreviated as + [WYSIWYG](https://en.wikipedia.org/wiki/WYSIWYG), in contrast to + [WYSIWYM](https://en.wikipedia.org/wiki/WYSIWYM), of which plain + Markdown (in RStudio source mode) is an example. + +[^2]: [Pandoc](https://pandoc.org/) is the workhorse for converting + markdown to a desired output (such as html). + +[^3]: A CSL processor is a piece of software to parse CSL styles, locale + files, item metadata and citing details, and generate citations and + bibliographies in the correct format. + [Multiple](https://citationstyles.org/developers/#/csl-processors) + CSL processors are available for use in software. The reference + implementation is the + [citeproc-js](https://citeproc-js.readthedocs.io/en/latest/) + processor, which is implemented e.g. in Zotero and Mendeley; the + citeproc-js project has also formulated the CSL-JSON standard. + Pandoc, the document conversion software used by R Markdown, uses + its own [citeproc](https://hackage.haskell.org/package/citeproc) CSL + processor. diff --git a/content/tutorials/r_database_access/index.Rmd b/content/tutorials/r_database_access/index.Rmd index a70beed93..239cf14ae 100644 --- a/content/tutorials/r_database_access/index.Rmd +++ b/content/tutorials/r_database_access/index.Rmd @@ -8,7 +8,7 @@ tags: ["database", "r", "data"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ```{r setup, include=FALSE} diff --git a/content/tutorials/r_database_access/index.md b/content/tutorials/r_database_access/index.md index 460640dbf..34d213d70 100644 --- a/content/tutorials/r_database_access/index.md +++ b/content/tutorials/r_database_access/index.md @@ -6,9 +6,9 @@ date: 2017-02-03 categories: ["r"] tags: ["database", "r", "data"] output: - md_document: - preserve_yaml: true - variant: markdown_github + md_document: + preserve_yaml: true + variant: gfm+footnotes --- Connection to INBO database diff --git a/content/tutorials/r_fixed_random/index.Rmd b/content/tutorials/r_fixed_random/index.Rmd index b3a9afa67..223864534 100644 --- a/content/tutorials/r_fixed_random/index.Rmd +++ b/content/tutorials/r_fixed_random/index.Rmd @@ -8,7 +8,7 @@ tags: ["r", "analysis", "mixed model"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ```{r setup, include=FALSE} diff --git a/content/tutorials/r_fixed_random/index.md b/content/tutorials/r_fixed_random/index.md index 53e4aa536..0821bc36c 100644 --- a/content/tutorials/r_fixed_random/index.md +++ b/content/tutorials/r_fixed_random/index.md @@ -6,9 +6,9 @@ date: "2020-07-01" categories: ["r", "statistics"] tags: ["r", "analysis", "mixed model"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm+footnotes --- ## Used packages diff --git a/content/tutorials/r_gbif_name_matching/index.Rmd b/content/tutorials/r_gbif_name_matching/index.Rmd index 0a8ac05f0..5a7d1a728 100644 --- a/content/tutorials/r_gbif_name_matching/index.Rmd +++ b/content/tutorials/r_gbif_name_matching/index.Rmd @@ -8,7 +8,7 @@ tags: ["api", "webservice", "r", "gbif", "biodiversity"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ## Introduction diff --git a/content/tutorials/r_gbif_name_matching/index.md b/content/tutorials/r_gbif_name_matching/index.md index d3036bb0d..e3e9c8622 100644 --- a/content/tutorials/r_gbif_name_matching/index.md +++ b/content/tutorials/r_gbif_name_matching/index.md @@ -6,9 +6,9 @@ date: 2019-08-21 categories: ["r"] tags: ["api", "webservice", "r", "gbif", "biodiversity"] output: - md_document: - preserve_yaml: true - variant: markdown_github + md_document: + preserve_yaml: true + variant: gfm+footnotes --- Introduction diff --git a/content/tutorials/r_large_data_files_handling/index.Rmd b/content/tutorials/r_large_data_files_handling/index.Rmd index 1c032adf5..0f8e204d8 100644 --- a/content/tutorials/r_large_data_files_handling/index.Rmd +++ b/content/tutorials/r_large_data_files_handling/index.Rmd @@ -8,7 +8,7 @@ tags: ["tidyverse", "r", "database"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ```{r setup, include=FALSE} diff --git a/content/tutorials/r_large_data_files_handling/index.md b/content/tutorials/r_large_data_files_handling/index.md index 5f8b6ba82..534929b79 100644 --- a/content/tutorials/r_large_data_files_handling/index.md +++ b/content/tutorials/r_large_data_files_handling/index.md @@ -8,7 +8,7 @@ tags: ["tidyverse", "r", "database"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ## Intro diff --git a/content/tutorials/r_paired_t_test/index.Rmd b/content/tutorials/r_paired_t_test/index.Rmd index de17f8afa..bdb0f00c9 100644 --- a/content/tutorials/r_paired_t_test/index.Rmd +++ b/content/tutorials/r_paired_t_test/index.Rmd @@ -8,7 +8,7 @@ tags: ["r", "analysis", "mixed model"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ```{r setup, include=FALSE} diff --git a/content/tutorials/r_paired_t_test/index.md b/content/tutorials/r_paired_t_test/index.md index a27503600..1e0af4105 100644 --- a/content/tutorials/r_paired_t_test/index.md +++ b/content/tutorials/r_paired_t_test/index.md @@ -6,9 +6,9 @@ date: "2020-07-01" categories: ["r", "statistics"] tags: ["r", "analysis", "mixed model"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm+footnotes --- ## What you will learn diff --git a/content/tutorials/r_script_sections/index.Rmd b/content/tutorials/r_script_sections/index.Rmd index c20d7172f..feb44bf34 100644 --- a/content/tutorials/r_script_sections/index.Rmd +++ b/content/tutorials/r_script_sections/index.Rmd @@ -8,7 +8,7 @@ tags: ["tidyverse", "r"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ## Introduction diff --git a/content/tutorials/r_script_sections/index.md b/content/tutorials/r_script_sections/index.md index 1e9c74968..071d74aa9 100644 --- a/content/tutorials/r_script_sections/index.md +++ b/content/tutorials/r_script_sections/index.md @@ -8,7 +8,7 @@ tags: ["tidyverse", "r"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ## Introduction diff --git a/content/tutorials/r_setup_codingclub_session/index.Rmd b/content/tutorials/r_setup_codingclub_session/index.Rmd index 95efbc775..b21ae947c 100644 --- a/content/tutorials/r_setup_codingclub_session/index.Rmd +++ b/content/tutorials/r_setup_codingclub_session/index.Rmd @@ -8,7 +8,7 @@ tags: ["data", "coding club", "r"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- diff --git a/content/tutorials/r_setup_codingclub_session/index.md b/content/tutorials/r_setup_codingclub_session/index.md index 38390cf47..54f129480 100644 --- a/content/tutorials/r_setup_codingclub_session/index.md +++ b/content/tutorials/r_setup_codingclub_session/index.md @@ -6,9 +6,9 @@ date: 2020-11-12 categories: ["r"] tags: ["data", "coding club", "r"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm+footnotes --- Before each coding club you will usually have to download some datasets @@ -34,10 +34,10 @@ library(inborutils) The function takes four arguments with the following default settings: - - `session_date` which is set to the present day - - `root_dir` which is set to the current/project directory `"."` - - `src_rel_path` which is set to the subdirectory `src` - - `data_rel_path` which is set to the subdirectory `data` +- `session_date` which is set to the present day +- `root_dir` which is set to the current/project directory `"."` +- `src_rel_path` which is set to the subdirectory `src` +- `data_rel_path` which is set to the subdirectory `data` So when we just run the function like this: @@ -132,7 +132,7 @@ or via R console: Doesn’t `setup_codingclub_session()` work as expected? Do you think there is a bug? Or do you have some ideas to improve the function? Raise -your hand\! Write an [issue](https://github.com/inbo/inborutils/issues) +your hand! Write an [issue](https://github.com/inbo/inborutils/issues) or contact one of the [INBO coding club organizers](https://inbo.github.io/coding-club/). We will be happy to help you. diff --git a/content/tutorials/r_spde/index.Rmd b/content/tutorials/r_spde/index.Rmd index 095446d44..3e8df5298 100644 --- a/content/tutorials/r_spde/index.Rmd +++ b/content/tutorials/r_spde/index.Rmd @@ -8,7 +8,7 @@ tags: ["r", "analysis", "mixed model", "INLA"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- This document is a quick and dirty illustration of how spatially correlated random effect can be fit with INLA. diff --git a/content/tutorials/r_spde/index.md b/content/tutorials/r_spde/index.md index 4613802a2..4ea4c6878 100644 --- a/content/tutorials/r_spde/index.md +++ b/content/tutorials/r_spde/index.md @@ -6,9 +6,9 @@ date: "2020-07-01" categories: ["r", "statistics"] tags: ["r", "analysis", "mixed model", "INLA"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm+footnotes --- This document is a quick and dirty illustration of how spatially diff --git a/content/tutorials/r_tidyverse_piping/index.Rmd b/content/tutorials/r_tidyverse_piping/index.Rmd index 2af549ad5..7a3984b94 100644 --- a/content/tutorials/r_tidyverse_piping/index.Rmd +++ b/content/tutorials/r_tidyverse_piping/index.Rmd @@ -8,7 +8,7 @@ tags: ["tidyverse", "r"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ```{r setup, include=FALSE} diff --git a/content/tutorials/r_tidyverse_piping/index.md b/content/tutorials/r_tidyverse_piping/index.md index ec6cf3beb..a2bf60f5e 100644 --- a/content/tutorials/r_tidyverse_piping/index.md +++ b/content/tutorials/r_tidyverse_piping/index.md @@ -6,17 +6,16 @@ date: 2018-06-14 categories: ["r"] tags: ["tidyverse", "r"] output: - md_document: - preserve_yaml: true - variant: markdown_github + md_document: + preserve_yaml: true + variant: gfm+footnotes --- ``` r library(dplyr) ``` -How to use piping in R -====================== +# How to use piping in R Normally, you would do this: @@ -81,8 +80,7 @@ What did we do: -Now what? ---------- +## Now what? We have created a new column, but this column is not part of our dataframe yet! We could do this: diff --git a/content/tutorials/r_zero_inflation/index.Rmd b/content/tutorials/r_zero_inflation/index.Rmd index b00b5954c..0e0edbc33 100644 --- a/content/tutorials/r_zero_inflation/index.Rmd +++ b/content/tutorials/r_zero_inflation/index.Rmd @@ -8,7 +8,7 @@ tags: ["r", "analysis", "mixed model"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ```{r setup, include=FALSE} diff --git a/content/tutorials/r_zero_inflation/index.md b/content/tutorials/r_zero_inflation/index.md index 242dc38f8..753757612 100644 --- a/content/tutorials/r_zero_inflation/index.md +++ b/content/tutorials/r_zero_inflation/index.md @@ -6,9 +6,9 @@ date: "2020-07-01" categories: ["r", "statistics"] tags: ["r", "analysis", "mixed model"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm+footnotes --- ## Used packages diff --git a/content/tutorials/r_zoom_in_ggplot/index.Rmd b/content/tutorials/r_zoom_in_ggplot/index.Rmd index e68e71a59..8c971dc1e 100644 --- a/content/tutorials/r_zoom_in_ggplot/index.Rmd +++ b/content/tutorials/r_zoom_in_ggplot/index.Rmd @@ -8,7 +8,7 @@ tags: ["r", "ggplot2"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ```{r setup, include=FALSE} diff --git a/content/tutorials/r_zoom_in_ggplot/index.md b/content/tutorials/r_zoom_in_ggplot/index.md index 88be64b4f..454a19130 100644 --- a/content/tutorials/r_zoom_in_ggplot/index.md +++ b/content/tutorials/r_zoom_in_ggplot/index.md @@ -6,20 +6,15 @@ date: "2020-07-01" categories: ["r"] tags: ["r", "ggplot2"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm+footnotes --- # Original figure ``` r library(ggplot2) -``` - - ## Warning: package 'ggplot2' was built under R version 4.0.2 - -``` r ggplot(mtcars, aes(x = factor(cyl), y = mpg)) + geom_boxplot() ``` diff --git a/content/tutorials/spatial_create_leaflet_map/index.Rmd b/content/tutorials/spatial_create_leaflet_map/index.Rmd index 809d3c3a4..afd961a5a 100644 --- a/content/tutorials/spatial_create_leaflet_map/index.Rmd +++ b/content/tutorials/spatial_create_leaflet_map/index.Rmd @@ -8,7 +8,7 @@ tags: ["gis", "r", "maps"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- _General note: migration to the more actively developed `sf` package is currently advised by the `sp` maintainer._ diff --git a/content/tutorials/spatial_create_leaflet_map/index.md b/content/tutorials/spatial_create_leaflet_map/index.md index 0e84ffd59..fb3bebc18 100644 --- a/content/tutorials/spatial_create_leaflet_map/index.md +++ b/content/tutorials/spatial_create_leaflet_map/index.md @@ -8,7 +8,7 @@ tags: ["gis", "r", "maps"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- *General note: migration to the more actively developed `sf` package is diff --git a/content/tutorials/spatial_crs_coding/index.Rmd b/content/tutorials/spatial_crs_coding/index.Rmd index b941eb769..c16a3d1c4 100644 --- a/content/tutorials/spatial_crs_coding/index.Rmd +++ b/content/tutorials/spatial_crs_coding/index.Rmd @@ -9,9 +9,9 @@ csl: https://raw.githubusercontent.com/citation-style-language/styles/master/res link-citations: TRUE bibliography: bibliography.json output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm+footnotes --- ```{r include = FALSE} diff --git a/content/tutorials/spatial_crs_coding/index.md b/content/tutorials/spatial_crs_coding/index.md index 3d7d983ed..ecbf4f28e 100644 --- a/content/tutorials/spatial_crs_coding/index.md +++ b/content/tutorials/spatial_crs_coding/index.md @@ -9,9 +9,9 @@ csl: https://raw.githubusercontent.com/citation-style-language/styles/master/res link-citations: TRUE bibliography: bibliography.json output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm+footnotes --- ## Coordinate reference systems: minimal background @@ -70,7 +70,7 @@ geospatial R packages `rgdal`, `sp`, `sf`, `stars`, `terra` and Since long, coordinate reference systems in R (and many other tools) have been represented by so called ‘PROJ.4 strings’ (or ‘proj4strings’), referring to the long-standing version 4 of the PROJ library. But, we -will not use them here! It is discouraged to use ‘PROJ strings’[1] any +will not use them here! It is discouraged to use ‘PROJ strings’[^1] any longer to represent a CRS; several string elements for CRSs are now deprecated or unsupported. Currently, PROJ () regards PROJ strings only as a means of specifying a *coordinate operation* @@ -78,7 +78,7 @@ PROJ strings only as a means of specifying a *coordinate operation* operations is the main aim of PROJ. Let’s just have **one last nostalgic peek** (and then, no more!!) to the -proj4string for EPSG:31370, the Belgian Lambert 72 CRS:[2] +proj4string for EPSG:31370, the Belgian Lambert 72 CRS:[^2] +proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +lat_0=90 +lon_0=4.367486666666666 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +towgs84=-106.8686,52.2978,-103.7239,0.3366,-0.457,1.8422,-1.2747 +units=m +no_defs @@ -95,9 +95,9 @@ and discouraged. It *can* still be done, preferrably adding the `+type=crs` element to distinguish such a string from modern PROJ strings. The latter represent a coordinate operation, not a CRS. Currently, support for most geodetic datums is already lacking in PROJ -strings[3] (unless one defines it indirectly, but likely less +strings[^3] (unless one defines it indirectly, but likely less accurately, with the now deprecated `+towgs84` key). The WGS84 ensemble -datum[4] +datum[^4] ([datum:EPSG::6326](https://epsg.org/datum_6326/World-Geodetic-System-1984-ensemble.html)) is now by default assumed for a CRS declared with a PROJ string. @@ -125,7 +125,7 @@ resources: string**, a recent and much better standard, maintained by the Open Geospatial Consortium. WKT stands for ‘Well-known text.’ ‘WKT2’ is simply the recent version of WKT, approved in 2019, so you can also -refer to it as WKT.[5] +refer to it as WKT.[^5] For example, this is the WKT2 string for WGS84: @@ -194,9 +194,9 @@ First, a practical note: PROJ ≥ 6, and a WKT2 string will be generated as well for actual use. In the presence of GDAL 3 / PROJ ≥ 6 and when using `sp` or `raster`, you will (at the time of writing) get a **warning** from - `rgdal` about dropped keys in the generated PROJ strings.[6] You can - safely ignore this warning on condition that you didn’t define the - CRS with a PROJ string. Also, you can suppress the warning with + `rgdal` about dropped keys in the generated PROJ strings.[^6] You + can safely ignore this warning on condition that you didn’t define + the CRS with a PROJ string. Also, you can suppress the warning with `options(rgdal_show_exportToProj4_warnings = "none")` in the beginning of your script (before loading `rgdal` or dependent packages). @@ -748,43 +748,47 @@ September 21, 2020). -[1] ‘PROJ string’ is the term used in current PROJ documentation. Here, -we only use ‘PROJ.4 string’ (or ‘proj4string’) when referring -specifically to the PROJ string appearance in version 4 of the PROJ -software. - -[2] Note that the *currently returned* PROJ string for EPSG:31370, if -requested from PROJ ≥ 6 or GDAL 3 (not shown), lacks the datum reference -which, in PROJ.4, was defined indirectly by `+towgs84` with the -7-parameter (Helmert) transformation to the WGS84 datum. Hence the -current PROJ string is a deficient representation of EPSG:31370. - -[3] Formerly, more geodetic datums could be specified in a PROJ string -with the `+datum` key. Currently only `WGS84`, `NAD27` and `NAD83` are -still supported this way. Further, if an ellipsoid is specified with -`+ellps` (and that includes the WGS84 ellipsoid), the datum of the -resulting CRS is considered as ‘unknown.’ The usage of PROJ strings to -define CRSs, including the `+datum` and `+towgs84` elements, will remain -supported for mere backward compatibility (to support existing data -sets), but is regarded deprecated and is discouraged by PROJ. - -[4] An [ensemble -datum](https://docs.opengeospatial.org/as/18-005r4/18-005r4.html#97) is -a collection of different but closely related datum realizations without -making a distinction between them. By not specifying the applicable -datum realization for a coordinate data set, some degree of inaccuracy -is allowed when using an ensemble datum as part of a CRS. - -[5] In order to emphasize the fact that the improvements in version 2 -were instructive to the new versions of GDAL and PROJ, you will often -see explicit mention of ‘WKT2.’ - -[6] The packages give a warning especially to make developers of -*other*, dependent packages *aware* that they should also make sure -their functions do not *require* PROJ strings or use hardcoded PROJ -strings. Instead, they should defer the handling of CRS representation -to the basic geospatial R packages (i.e. dependent on the version of -PROJ/GDAL). So, the appearance of these warnings marks a period of -transition in order to let other packages become GDAL 3 and PROJ ≥ 6 -compliant. And the good news is that most popular geospatial packages -*have* become GDAL 3 and PROJ ≥ 6 compliant! +[^1]: ‘PROJ string’ is the term used in current PROJ documentation. + Here, we only use ‘PROJ.4 string’ (or ‘proj4string’) when referring + specifically to the PROJ string appearance in version 4 of the PROJ + software. + +[^2]: Note that the *currently returned* PROJ string for EPSG:31370, if + requested from PROJ ≥ 6 or GDAL 3 (not shown), lacks the datum + reference which, in PROJ.4, was defined indirectly by `+towgs84` + with the 7-parameter (Helmert) transformation to the WGS84 datum. + Hence the current PROJ string is a deficient representation of + EPSG:31370. + +[^3]: Formerly, more geodetic datums could be specified in a PROJ string + with the `+datum` key. Currently only `WGS84`, `NAD27` and `NAD83` + are still supported this way. Further, if an ellipsoid is specified + with `+ellps` (and that includes the WGS84 ellipsoid), the datum of + the resulting CRS is considered as ‘unknown.’ The usage of PROJ + strings to define CRSs, including the `+datum` and `+towgs84` + elements, will remain supported for mere backward compatibility (to + support existing data sets), but is regarded deprecated and is + discouraged by PROJ. + +[^4]: An [ensemble + datum](https://docs.opengeospatial.org/as/18-005r4/18-005r4.html#97) + is a collection of different but closely related datum realizations + without making a distinction between them. By not specifying the + applicable datum realization for a coordinate data set, some degree + of inaccuracy is allowed when using an ensemble datum as part of a + CRS. + +[^5]: In order to emphasize the fact that the improvements in version 2 + were instructive to the new versions of GDAL and PROJ, you will + often see explicit mention of ‘WKT2.’ + +[^6]: The packages give a warning especially to make developers of + *other*, dependent packages *aware* that they should also make sure + their functions do not *require* PROJ strings or use hardcoded PROJ + strings. Instead, they should defer the handling of CRS + representation to the basic geospatial R packages (i.e. dependent on + the version of PROJ/GDAL). So, the appearance of these warnings + marks a period of transition in order to let other packages become + GDAL 3 and PROJ ≥ 6 compliant. And the good news is that most + popular geospatial packages *have* become GDAL 3 and PROJ ≥ 6 + compliant! diff --git a/content/tutorials/spatial_point_in_polygon/index.Rmd b/content/tutorials/spatial_point_in_polygon/index.Rmd index 6cb951a21..869ba0e92 100644 --- a/content/tutorials/spatial_point_in_polygon/index.Rmd +++ b/content/tutorials/spatial_point_in_polygon/index.Rmd @@ -8,7 +8,7 @@ tags: ["gis", "r", "maps"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ```{r include = FALSE} diff --git a/content/tutorials/spatial_point_in_polygon/index.md b/content/tutorials/spatial_point_in_polygon/index.md index 51c1ffbe1..1385f203f 100644 --- a/content/tutorials/spatial_point_in_polygon/index.md +++ b/content/tutorials/spatial_point_in_polygon/index.md @@ -8,7 +8,7 @@ tags: ["gis", "r", "maps"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ``` r diff --git a/content/tutorials/spatial_standards_raster/index.Rmd b/content/tutorials/spatial_standards_raster/index.Rmd index 3e1730c19..ae258c00c 100644 --- a/content/tutorials/spatial_standards_raster/index.Rmd +++ b/content/tutorials/spatial_standards_raster/index.Rmd @@ -8,7 +8,7 @@ tags: ["gis", "r"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- _General note: the way the `raster` package handles coordinate reference systems has just recently (at the time of writing) become compliant with recent GDAL 3 and PROJ >= 6 versions._ diff --git a/content/tutorials/spatial_standards_raster/index.md b/content/tutorials/spatial_standards_raster/index.md index 232beae7d..4e46033c7 100644 --- a/content/tutorials/spatial_standards_raster/index.md +++ b/content/tutorials/spatial_standards_raster/index.md @@ -6,10 +6,9 @@ date: 2020-09-15 categories: ["r", "gis"] tags: ["gis", "r"] output: - md_document: - preserve_yaml: true - variant: gfm - html_document: default + md_document: + preserve_yaml: true + variant: gfm+footnotes --- _General note: the way the `raster` package handles coordinate reference systems has just recently (at the time of writing) become compliant with recent GDAL 3 and PROJ >= 6 versions._ diff --git a/content/tutorials/spatial_standards_vector/index.Rmd b/content/tutorials/spatial_standards_vector/index.Rmd index 267801bec..24e1a9d61 100644 --- a/content/tutorials/spatial_standards_vector/index.Rmd +++ b/content/tutorials/spatial_standards_vector/index.Rmd @@ -8,7 +8,7 @@ tags: ["gis", "r"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ```{r include = FALSE} diff --git a/content/tutorials/spatial_standards_vector/index.md b/content/tutorials/spatial_standards_vector/index.md index d2556163f..64134f503 100644 --- a/content/tutorials/spatial_standards_vector/index.md +++ b/content/tutorials/spatial_standards_vector/index.md @@ -6,10 +6,9 @@ date: 2020-02-03 categories: ["r", "gis"] tags: ["gis", "r"] output: - md_document: - preserve_yaml: true - variant: gfm - html_document: default + md_document: + preserve_yaml: true + variant: gfm+footnotes --- This tutorial uses a few basic functions from the diff --git a/content/tutorials/spatial_transform_crs/index.Rmd b/content/tutorials/spatial_transform_crs/index.Rmd index 5fe3c2a39..a895c222f 100644 --- a/content/tutorials/spatial_transform_crs/index.Rmd +++ b/content/tutorials/spatial_transform_crs/index.Rmd @@ -8,7 +8,7 @@ tags: ["gis", "r", "maps"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- _General note: migration to the more actively developed `sf` package is currently advised by the `sp` maintainer._ diff --git a/content/tutorials/spatial_transform_crs/index.md b/content/tutorials/spatial_transform_crs/index.md index f487a2547..62aaa3d3c 100644 --- a/content/tutorials/spatial_transform_crs/index.md +++ b/content/tutorials/spatial_transform_crs/index.md @@ -6,9 +6,9 @@ date: 2020-09-14 categories: ["r"] tags: ["gis", "r", "maps"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm+footnotes --- *General note: migration to the more actively developed `sf` package is diff --git a/content/tutorials/spatial_transform_crs_2/index.Rmd b/content/tutorials/spatial_transform_crs_2/index.Rmd index 47b7da268..e98221812 100644 --- a/content/tutorials/spatial_transform_crs_2/index.Rmd +++ b/content/tutorials/spatial_transform_crs_2/index.Rmd @@ -11,7 +11,7 @@ bibliography: bibliography.yaml output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ```{r include = FALSE} diff --git a/content/tutorials/spatial_transform_crs_2/index.md b/content/tutorials/spatial_transform_crs_2/index.md index f55a0b366..ef6b0487b 100644 --- a/content/tutorials/spatial_transform_crs_2/index.md +++ b/content/tutorials/spatial_transform_crs_2/index.md @@ -9,9 +9,9 @@ csl: https://raw.githubusercontent.com/citation-style-language/styles/master/res link-citations: TRUE bibliography: bibliography.yaml output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm+footnotes --- ## Introduction and setup diff --git a/content/tutorials/spatial_wfs_services/index.Rmd b/content/tutorials/spatial_wfs_services/index.Rmd index 3283d100d..cf3252c9f 100644 --- a/content/tutorials/spatial_wfs_services/index.Rmd +++ b/content/tutorials/spatial_wfs_services/index.Rmd @@ -9,7 +9,7 @@ bibliography: "../../articles/reproducible_research.bib" output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ```{r include = FALSE} diff --git a/content/tutorials/spatial_wfs_services/index.md b/content/tutorials/spatial_wfs_services/index.md index 7becf2804..6742340ce 100644 --- a/content/tutorials/spatial_wfs_services/index.md +++ b/content/tutorials/spatial_wfs_services/index.md @@ -7,9 +7,9 @@ categories: ["r"] tags: ["gis", "webservice", "r", "maps"] bibliography: "../../articles/reproducible_research.bib" output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm+footnotes --- # What is WFS? diff --git a/content/tutorials/spatial_wms_services/index.Rmd b/content/tutorials/spatial_wms_services/index.Rmd index bafb4fc42..cf85cb8bd 100644 --- a/content/tutorials/spatial_wms_services/index.Rmd +++ b/content/tutorials/spatial_wms_services/index.Rmd @@ -8,7 +8,7 @@ tags: ["gis", "webservice", "r", "maps"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ```{r include = FALSE} diff --git a/content/tutorials/spatial_wms_services/index.md b/content/tutorials/spatial_wms_services/index.md index 7bfdc3799..815c08260 100644 --- a/content/tutorials/spatial_wms_services/index.md +++ b/content/tutorials/spatial_wms_services/index.md @@ -8,7 +8,7 @@ tags: ["gis", "webservice", "r", "maps"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- WMS stands for [Web Map diff --git a/content/tutorials/style_inbo_bibliography/index.Rmd b/content/tutorials/style_inbo_bibliography/index.Rmd index 6ee663c80..a7a541914 100644 --- a/content/tutorials/style_inbo_bibliography/index.Rmd +++ b/content/tutorials/style_inbo_bibliography/index.Rmd @@ -8,7 +8,7 @@ tags: ["bibliography", "csl", "INBOmd", "open science", "zotero", "mendeley", "e output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ```{r setup, include=FALSE} diff --git a/content/tutorials/style_inbo_bibliography/index.md b/content/tutorials/style_inbo_bibliography/index.md index 555f4748c..2e7c1682d 100644 --- a/content/tutorials/style_inbo_bibliography/index.md +++ b/content/tutorials/style_inbo_bibliography/index.md @@ -6,9 +6,9 @@ date: "2020-11-20" categories: ["styleguide"] tags: ["bibliography", "csl", "INBOmd", "open science", "zotero", "mendeley", "endnote"] output: - md_document: - preserve_yaml: true - variant: gfm + md_document: + preserve_yaml: true + variant: gfm+footnotes --- # The INBO citation style diff --git a/content/tutorials/styleguide_r_code/index.Rmd b/content/tutorials/styleguide_r_code/index.Rmd index 079fdba34..d7a1fbe01 100644 --- a/content/tutorials/styleguide_r_code/index.Rmd +++ b/content/tutorials/styleguide_r_code/index.Rmd @@ -8,7 +8,7 @@ tags: ["styleguide", "r"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ## Scope diff --git a/content/tutorials/styleguide_r_code/index.md b/content/tutorials/styleguide_r_code/index.md index cf283afd4..191f5b1ad 100644 --- a/content/tutorials/styleguide_r_code/index.md +++ b/content/tutorials/styleguide_r_code/index.md @@ -8,7 +8,7 @@ tags: ["styleguide", "r"] output: md_document: preserve_yaml: true - variant: gfm + variant: gfm+footnotes --- ## Scope From dc161a852165d9890a014b6bf52a5d1d014c1ac7 Mon Sep 17 00:00:00 2001 From: peterdesmet Date: Fri, 28 Jan 2022 16:38:17 +0100 Subject: [PATCH 10/11] Update create tutorial to include the desired properties --- content/create_tutorial/index.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/content/create_tutorial/index.md b/content/create_tutorial/index.md index 24845ae16..c7e1ef126 100644 --- a/content/create_tutorial/index.md +++ b/content/create_tutorial/index.md @@ -154,8 +154,9 @@ date: YYYY-MM-DD categories: ["YOUR_CATEGORY"] tags: ["FIRST_TAG", "SECOND_TAG", "..."] output: - md_document: - preserve_yaml: true + md_document: + preserve_yaml: true + variant: gfm+footnotes --- # your text starts here... From c9b14c1a6a30bd7e7a24213e1f65226463523a1e Mon Sep 17 00:00:00 2001 From: peterdesmet Date: Fri, 28 Jan 2022 16:38:25 +0100 Subject: [PATCH 11/11] Revert "Remove lines that cause error" This reverts commit 580e6d5241fe7b03e1ac13a429106e2e7ecd09dd. --- content/articles/reproducible_research.bib | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/articles/reproducible_research.bib b/content/articles/reproducible_research.bib index 9597006c1..dc7f80f25 100644 --- a/content/articles/reproducible_research.bib +++ b/content/articles/reproducible_research.bib @@ -801,6 +801,7 @@ @book{heijmans_spatial_2019 @online{ropensci_contributors_reproducibility_2018, title = {Reproducibility {{Guide}}}, author = {{ROpenSci Contributors}}, + date = {2018}, url = {https://ropensci.github.io/reproducibility-guide/}, urldate = {2020-09-22} } @@ -809,6 +810,7 @@ @online{ropensci_contributors_reproducibility_2018 @online{national_center_for_ecological_analysis__synthesis_openscapes_2020, title = {Openscapes {{Resources}}}, author = {{National Center for Ecological Analysis \& Synthesis}}, + date = {2020}, url = {https://www.openscapes.org/resources/}, urldate = {2020-09-22}, langid = {american}