Skip to content

Commit 161afa5

Browse files
committed
Revision of C02 learnr modules
1 parent dd7728c commit 161afa5

File tree

6 files changed

+221
-191
lines changed

6 files changed

+221
-191
lines changed

.Rbuildignore

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
.gitignore
2-
.git
3-
.git/*
4-
^\.github/
1+
^\.gitignore$
2+
^\.git$
3+
^\.github$
54

6-
.DS_Store
5+
^\.DS_Store$
76

87
README\.R?md
98
CONDUCT\.md
@@ -12,8 +11,8 @@ FAQ.md
1211
^cran-comments\.md$
1312
^CRAN-RELEASE$
1413

15-
Makefile
16-
.Rprofile
14+
^Makefile$
15+
^\.Rprofile$
1716

1817
^.*\.Rproj$
1918
^\.Rproj\.user$
@@ -34,9 +33,8 @@ Makefile
3433

3534

3635
^inst/tutorials/.*\.html$
37-
devel/*
38-
devel
36+
^devel/*
3937

4038
rsconnect/*
4139
rsconnect
42-
40+
^.*/rsconnect/*

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Package: BioDataScience1
2-
Version: 2022.1.2
2+
Version: 2022.2.0
33
Title: A Series of Learnr Documents for Biological Data Science 1
44
Description: Interactive documents using learnr and shiny applications for studying biological data science.
55
Authors@R: c(

NEWS.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
1+
# BioDataScience1 2022.2.0
2+
3+
- **A02La_base** added new items from SciViews Box 2022: base R pipe `|>` and fast functions from {collapse} like `fmean()`.
4+
5+
- **A02Lb_progression** and **A02Lc_scatterplot** revised.
6+
17
# BioDataScience1 2022.1.2
28

3-
- Correction in the id of A01Lb_git.
9+
- Correction in the id of **A01Lb_git**.
410

511
# BioDataScience1 2022.1.1
612

inst/tutorials/A02La_base/A02La_base.Rmd

Lines changed: 44 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "Les bases de R"
33
author : "Guyliann Engels & Philippe Grosjean"
4-
description: "**SDD I Module 2** Les bases de l'utilisation de R pour du calcul."
4+
description: "**SDD I Module 2** Les bases de l'utilisation de R."
55
tutorial:
66
id: "A02La_base"
77
version: 2.0.1/7
@@ -29,7 +29,7 @@ BioDataScience1::learnr_server(input, output, session)
2929

3030
## Objectif
3131

32-
Dans le premier module, vous avez découvert plusieurs logiciels que vous allez employer dans les cours des sciences des données. Vous avez réalisé un premier projet qui comprenait entre autres des instructions R. Sans vous en rendre compte, vous avez utilisé le langage R afin de réaliser des tableaux et des graphiques dans un carnet de notes au format R Markdown. Ce tutoriel a pour objectif de vous permettre de découvrir les bases du langage R.
32+
Dans le premier module, vous avez découvert plusieurs logiciels que vous allez employer dans les cours des sciences des données. Vous avez réalisé un premier projet qui comprenait, entre autres, des instructions R. Vous avez en fait utilisé le langage R afin de réaliser des tableaux et des graphiques dans un carnet de notes au format R Markdown. Ce tutoriel a pour objectif de vous permettre de découvrir les bases du langage R.
3333

3434
```{r, out.width='50%'}
3535
knitr::include_graphics("images/Rlogo.png")
@@ -41,9 +41,9 @@ Regardez la vidéo ci-dessous.
4141

4242
![](https://www.youtube.com/watch?v=XcBLEVknqvY)
4343

44-
[R](https://www.r-project.org/about.html) est un logiciel **open source** axé sur l'analyse de données. Le langage de programmation R qu'il implémente est mature et développé depuis 1993. Il prend ses sources dans le langage S (spécialement conçu pour les statistiques dans les années 1970). R permet entre autres la manipulation, la visualisation et l'application de calculs statistiques sur des données. C'est l'un des environnements les plus utilisés et les plus puissants pour l'analyse des données. Python est un autre langage très utilisé en science des données, mais il est moins facile à aborder pour un non-informaticien. Donc, étudier R sera un **investissement clé** pour votre future carrière de biologiste, car des données, vous en aurez tous à analyser dans votre travail !
44+
[R](https://www.r-project.org/about.html) est un logiciel **open source** centré sur l'analyse de données. Le langage de programmation R qu'il implémente est mature et développé depuis 1993. Il prend ses sources dans le langage S (spécialement conçu pour les statistiques dans les années 1970). R permet entre autres la manipulation, la visualisation et l'application de calculs statistiques sur des données. C'est l'un des environnements les plus utilisés et les plus puissants pour l'analyse des données. Python est un autre langage très utilisé en science des données, mais il est moins facile à aborder pour un non-informaticien. Donc, étudier R sera un **investissement clé** pour votre future carrière de biologiste, car des données, vous en aurez tous à analyser dans votre travail !
4545

46-
**Éléments optionnels :** si vous voulez lire une analyse complète et objective (un peu longue, technique et en anglais) qui compare R à d'autres logiciels d'analyse des données, [suivez ce lien](http://blog.revolutionanalytics.com/popularity/). Et en voici [un autre](http://r4stats.com/articles/popularity/). [Pourquoi R ?](https://www.infoworld.com/article/2940864/application-development/r-programming-language-statistical-data-analysis.html), un autre point de vue (toujours en anglais).
46+
**Éléments optionnels :** si vous voulez lire une analyse complète et objective (un peu longue, technique et en anglais) qui compare R à d'autres logiciels d'analyse des données, [suivez ce lien](http://r4stats.com/articles/popularity/). [Pourquoi R ?](https://www.infoworld.com/article/2940864/application-development/r-programming-language-statistical-data-analysis.html), un autre point de vue (toujours en anglais).
4747

4848
Ce tutoriel vous propose une suite d'activités afin d'apprendre les rudiments de R.
4949

@@ -75,7 +75,7 @@ Voici un premier exemple d'instruction R tel qu'elle se présente dans les tutor
7575

7676
- Multipliez les nombres `15` et `23` (un encadré **Code R** est une zone où vous pouvez vous-même entrer des instructions R et/ou les modifier. Les numéros à gauche sont les numéros de lignes. Ils ne font pas partie des instructions. Utilisez le bouton **Run Code** pour tester, et ensuite **Submit Answer** quand vous êtes satisfait de votre réponse).
7777

78-
*S'il est présent, le bouton **Solution** permet de visualiser le code qui est demandé. Essayez toujours de résoudre l'exercice par vous-même.* ***Si vous visualisez la solution, vous perdez automatiquement la moitié des points pour la question !***
78+
*S'il est présent, le bouton **Solution** permet de visualiser le code qui est demandé. Essayez toujours de résoudre l'exercice par vous-même.* **Si vous visualisez la solution, vous perdez automatiquement la moitié des points pour la question !**
7979

8080
```{r calcul1, exercise=TRUE}
8181
@@ -87,7 +87,7 @@ Voici un premier exemple d'instruction R tel qu'elle se présente dans les tutor
8787

8888
```{r calcul1-check}
8989
grade_result(
90-
pass_if(~ identical(.result, 15 * 23), "Je suis bluffé. Bien joué ! Vous venez de réaliser votre première instruction en R."),
90+
pass_if(~ identical(.result, 15 * 23), "Vous venez d'écrire votre première instruction en R."),
9191
fail_if(~ TRUE, "Ce n'est pas vraiment la réponse que j'attendais. Revoyez comment écrire une multiplication en R plus haut dans cette page.")
9292
)
9393
```
@@ -109,13 +109,14 @@ log(4 + 5)
109109
```
110110

111111
```{r calcul2_h2-hint}
112-
# Vous pouvez imbriquer lezs calculs avec les fonctions
112+
# Vous pouvez imbriquer les calculs avec les fonctions
113113
# comme vous le faites avec les opérateurs mathématiques
114114
115115
## Attention : solution dans le 'hint' suivant!
116116
```
117117

118118
```{r calcul2_h2-solution}
119+
## Solution ##
119120
exp(23 - 15)
120121
```
121122

@@ -148,7 +149,7 @@ Notez aussi que tout ce qui suit un dièse (`#`) sur une même ligne dans R est
148149
- Exemple de noms corrects : `a`, `a1`, `vec`, `vec_max`, `.vec`, `A`.
149150
- Exemple de noms incorrects : `1a`, `_a`, `vec max`, `vec-max`.
150151

151-
- Évitez d'utiliser des caractères accentués dans les noms.
152+
- Évitez d'utiliser des caractères accentués dans les noms, même si ici ce n'est pas une règle absolue.
152153

153154
- R fait la différence entre majuscules et minuscules : `x` est différent de `X`. **Je répète : R fait la différence entre majuscules et minuscules dans les noms !**
154155

@@ -221,7 +222,7 @@ Vous constatez que R ne renvoie rien en cas d'assignation. C'est un comportement
221222
v1
222223
```
223224

224-
Maintenant que vous savez comment réaliser une assignation, à votre tour...
225+
Maintenant que vous avez compris comment réaliser une assignation, à votre tour...
225226

226227
- Assignez à `v4` les valeurs `15` , `19`, une valeur manquante (`NA`) et `13`.
227228

@@ -248,7 +249,7 @@ v5
248249
```
249250

250251
```{r vec1-check}
251-
grade_code("Les assignations n'ont plus de secrets pour vous.")
252+
grade_code("Les assignations n'ont manifestement plus de secrets pour vous.")
252253
```
253254

254255
**Commentaires :**
@@ -313,7 +314,7 @@ mean(v4)
313314
```
314315

315316
```{r vec2-check}
316-
grade_code("C'est cela\ : les fonctions génériques s'utilisent comme les autres, mais faites bien attention aux différentes formes possibles (que l'on appelle les **méthodes** de la fonction)\ !.")
317+
grade_code("C'est cela : les fonctions génériques s'utilisent comme les autres, mais faites bien attention aux différentes formes possibles (que l'on appelle les **méthodes** de la fonction) !.")
317318
```
318319

319320
Certaines fonctions servent à **résumer** un ensemble de données, c'est-à-dire qu'elles les représentent avec une seule ou un petit nombre de valeurs. Ainsi, quelle que soit la taille du vecteur `v4`, sa moyenne est toujours un nombre unique. Ici, nous avons obtenu `NA`. Nous savons pourquoi. Les valeurs manquantes sont **contaminantes** dans les calculs. Il en suffit d'une seule pour que l'ensemble du résultat soit `NA`. Naturellement dans ce cas, c'est dommage, car la moyenne pourrait être *estimée* sur base des trois autres valeurs connues. L'argument `na.rm` permet de le faire... mais comment le savoir ? En lisant **la page d'aide de la fonction**. Pour cela, utilisez l'instruction `?` suivi du nom de la fonction. Dans RStudio, la page d'aide apparaît dans l'onglet **Help** (copie d'écran ci-dessous).
@@ -356,6 +357,24 @@ Vous obtenez cette fois-ci la réponse souhaitée.
356357

357358
> La prise en charge des valeurs manquantes de manière fine est une caractéristique importante de tout logiciel d'analyse de données digne de ce nom. Notez, par exemple, qu'Excel (un logiciel qui traite des tableaux) **n'est pas** capable de le faire de manière aussi fine que R !
358359
360+
## Fonctions statistiques "fast"
361+
362+
Dans le dialecte `SciViews::R` (qui nécessite donc cette instruction en toute première ligne pour se configurer comme tel), nous utiliserons une famille de fonctions alternatives qui servent à résumer des données, comme le calcul de la moyenne. Ces fonctions statistiques sont appelées "fast" parce qu'elles calculent plus rapidement que les fonctions équivalentes de R de base, mais elles ont aussi d'autres propriétés intéressantes que vous découvrirez plus tard. Ces fonctions portent le même nom que la version plus classique, mais préfixé d'un "f". Ainsi, l'équivalent de `mean()` en fonction statistique "fast" est `fmean()`. Une particularité de ces fonctions est d'inverser la convention pour la valeur par défaut de l'argument `na.rm=` qui vaut ici `TRUE` si non précisé. Ainsi, dans notre exemple de la moyenne de `v4` qui contient une valeur manquante, vous pourrez simplement écrire avec `fmean()` :
363+
364+
```{r, echo=TRUE}
365+
SciViews::R # À n'écrire qu'une seule fois en début de script
366+
# Assignation des valeurs à v4
367+
v4 <- c(15, 19, NA, 13)
368+
# Moyenne du vecteur, avec élimination des NAs
369+
fmean(v4)
370+
```
371+
372+
Naturellement, rien ne vous empêche d'être plus explicite et d'indiquer `na.rm = TRUE` quand même, et cela ne changera rien au calcul effectué. Ici, avec un si petit vecteur, le calcul est tellement rapide que vous ne vous rendez pas compte de la différence de vitesse. Lorsque vous aurez des bien plus gros jeux de données, alors les fonctions "fast" deviendront réellement intéressantes. Pour lister ces fonctions statistiques "fast" vous faites :
373+
374+
```{r, echo=TRUE}
375+
list_fstat_functions()
376+
```
377+
359378
## Imbrication et chaînage
360379

361380
Vous pouvez utiliser un appel de fonction partout dans une instruction, à la même place que vous utiliseriez un nom ou une valeur. Par exemple :
@@ -430,6 +449,19 @@ log(x) %>.%
430449
grade_code("C'est exactement cela. Le chaînage des opérations rend le code bien plus lisible.")
431450
```
432451

452+
Vous utiliserez aussi l'opérateur de pipe de R de base `|>`. Il s'utilise de façon similaire, sauf que le mebre de gauche est injecté comme premier argument dans la fonction à droite, et il ne faut pas (et même, on ne peut pas) indiquer où le mettre à l'aide du point `.`. Voici, à titre d'illustration, trois fois la même instruction, écrite en imbriquant les fonction, puis avec `%>.%`, et enfin, avec `|>`.
453+
454+
```{r, echo=TRUE}
455+
x <- 1:5
456+
# Fonctions imbriquées
457+
mean(log(x), na.rm = TRUE)
458+
# Pipe %>.%
459+
log(x) %>.% # On va généralement à la ligne ici
460+
mean(., na.rm = TRUE) # Le point indique où placer "log(x)"
461+
# Pipe |>
462+
log(x) |> mean(na.rm = TRUE) # Pas de point ici !
463+
```
464+
433465
## Conclusion
434466

435467
![](images/bravo.gif)
@@ -449,7 +481,7 @@ Durant cette séance, vous avez appris à :
449481

450482
**Pour aller plus loin...**
451483

452-
- [Ce tutoriel](https://tutorials.shinyapps.io/04-Programming-Basics/#section-lists) (en anglais), explique avec plus de détails les fonctions, les arguments et les vecteurs dans R.
484+
- [Ce tutoriel](https://tutorials.shinyapps.io/04-Programming-Basics/) (en anglais), explique avec plus de détails les fonctions, les arguments et les vecteurs dans R.
453485

454486
```{r comm_noscore, echo=FALSE}
455487
question_text(

0 commit comments

Comments
 (0)