Skip to content

Commit 80ed79a

Browse files
committed
tutorial 02a_base done, including data recording
1 parent b0deb78 commit 80ed79a

File tree

6 files changed

+101
-55
lines changed

6 files changed

+101
-55
lines changed

R/checker_sdd.R

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
#'
33
#' @param label The label for the learnr exercice.
44
#' @param user_code The code submitted by the user.
5-
#' @param check_code The code to check against.
6-
#' @param envir_result The environment for results.
5+
#' @param solution_code The code provided by the "-solution" chunk.
6+
#' @param check_code The code provided by the "-check" chunk.
7+
#' @param envir_result The environment after the execution of the chunk.
78
#' @param evaluate_result Result from evaluation of the code.
8-
#' @param ... Additional parameters.
9+
#' @param ... Additional parameters (currently not used).
910
#'
1011
#' @description Check code submitted during an exercice. This version just
1112
#' acknowledges reception of the submission. This function is used internally
@@ -16,9 +17,10 @@
1617
#' @seealso [run()]
1718
#' @keywords utilities
1819
#' @concept record events from the BioDataScience package
19-
checker_sdd <- function(label, user_code, check_code, envir_result,
20-
evaluate_result, ...) {
21-
list(message = "Your answer is recorded!", correct = TRUE, location = "append")
20+
checker_sdd <- function(label, user_code, solution_code, check_code,
21+
envir_result, evaluate_result, ...) {
22+
list(message = "Your answer is recorded!", correct = TRUE, type = "info",
23+
location = "append")
2224
}
2325
#Use: tutorial_options(exercise.checker = checker_sdd)
2426
#

R/record_sdd.R

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,14 @@ record_sdd <- function(tutorial_id, tutorial_version, user_id, event, data) {
4242
version = tutorial_version, user = user_id, user_name = user_name,
4343
user_email = user_email, label = label, correct = correct, event = event,
4444
data = list_to_json(data))
45-
if (correct == "") {
46-
add_file_base64(entry, file = bds_file)
47-
return()
48-
}
45+
# Not a good idea: if user never clicks "Submit", nothing is fed to database
46+
#if (correct == "") {
47+
# add_file_base64(entry, file = bds_file)
48+
# return()
49+
#}
4950
# Once http request with stitch will be available, we could do something like
5051
#https://stitch.mongodb.com/api/client/v2.0/app/sdd-relay-aizkd/service/sdd-http/incoming_webhook/webhook0
51-
m <- try(mongo("ex01",
52+
m <- try(mongo("sdd",
5253
#url = "mongodb://sdd:sdd@ds125388.mlab.com:25388/sdd-test")$insert(entry)
5354
url = "mongodb://sdd:sdd@sdd-umons-shard-00-00-umnnw.mongodb.net:27017,sdd-umons-shard-00-01-umnnw.mongodb.net:27017,sdd-umons-shard-00-02-umnnw.mongodb.net:27017/test?ssl=true&replicaSet=sdd-umons-shard-0&authSource=admin"),
5455
silent = TRUE)
@@ -68,4 +69,17 @@ record_sdd <- function(tutorial_id, tutorial_version, user_id, event, data) {
6869
add_file_base64(entry, file = bds_file)
6970
}
7071
}
71-
# Use: options(tutorial.event_recorder = record_sdd)
72+
# Use: options(tutorial.event_recorder = record_sdd)
73+
#
74+
# To collect these data:
75+
collect_sdd <- function() {
76+
mdb <- mongolite::mongo("sdd", #url = "mongodb://sdd:sdd@ds125318.mlab.com:25318/sdd-cours")
77+
#url = "mongodb://sdd:sdd@ds125388.mlab.com:25388/sdd-test")
78+
url = "mongodb://sdd:sdd@sdd-umons-shard-00-00-umnnw.mongodb.net:27017,sdd-umons-shard-00-01-umnnw.mongodb.net:27017,sdd-umons-shard-00-02-umnnw.mongodb.net:27017/test?ssl=true&replicaSet=sdd-umons-shard-0&authSource=admin")
79+
# url = "mongodb://sdd:sdd@sdd-umons-shard-00-01-umnnw.mongodb.net:27017")
80+
#mongodb://sdd:<PASSWORD>@sdd-umons-shard-00-00-umnnw.mongodb.net:27017,sdd-umons-shard-00-01-umnnw.mongodb.net:27017,sdd-umons-shard-00-02-umnnw.mongodb.net:27017/test?ssl=true&replicaSet=sdd-umons-shard-0&authSource=admin
81+
#print(mdb)
82+
if (mdb$count())
83+
mdb$find()
84+
}
85+
#sdd_data <- collect_sdd(); View(sdd_data)

inst/tutorials/02a_base/base.Rmd

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: "Les bases de R : découverte de l'outils"
33
author : "Guyliann Engels & Philippe Grosjean"
44
tutorial:
55
id: "sdd1.02a"
6-
version: 0.1-0
6+
version: 0.1.0
77
output:
88
learnr::tutorial:
99
progressive: TRUE
@@ -12,11 +12,12 @@ runtime: shiny_prerendered
1212

1313
```{r setup, include=FALSE}
1414
library(learnr)
15+
options(tutorial.event_recorder = BioDataScience::record_sdd)
16+
tutorial_options(exercise.checker = BioDataScience::checker_sdd)
17+
tutorial_options(exercise.timelimit = 60)
18+
tutorial_options(exercise.cap = "Instructions R")
1519
knitr::opts_chunk$set(echo = FALSE)
16-
1720
SciViews::R()
18-
#library(BioDataScience)
19-
#library(knitr)
2021
```
2122

2223
![](images/intro.png)
@@ -29,7 +30,7 @@ SciViews::R()
2930
knitr::include_graphics("images/Rlogo.png")
3031
```
3132

32-
> Il est important de préciser que l'ensemble de vos résultats sera collecté afin de suivre votre progression. Ce test n'est cependant pas certificatif. Conformément au RGPD ([Règlement Général sur la Protection des Données](https://ec.europa.eu/info/law/law-topic/data-protection/reform/rules-business-and-organisations/principles-gdpr_fr)) en Europe, effectif depuis le 25 mai 2018, nous sommes tenus de vous informer et de demander votre accord pour cela. Donc, en cliquant sur le bouton ci-dessous, vous marquez expressément votre accord pour que ces données puissent être collectées et utilisées dans le but d'analyser votre progression pour (1) vous aider, et (2) améliorer ces tutoriaux. Ces données pourront également servir à des études globales (évaluation des résultats globaux par année et au fil du temps, ou évaluation globale de la méthode d'apprentissage par exemple, y compris dans des publications scientifiques). Dans ce dernier cas, les données seront rendues anonymes. Seuls vos enseignants pourront utiliser ces données de manière non anonymes dans le cadre de votre évaluation, et les détails de cette évaluation ne seront accessibles que par vous-même de manière non anonyme.
33+
> Il est important de préciser que l'ensemble de vos résultats sera collecté afin de suivre votre progression. Ce test n'est cependant pas certificatif. Conformément au RGPD ([Règlement Général sur la Protection des Données](https://ec.europa.eu/info/law/law-topic/data-protection/reform/rules-business-and-organisations/principles-gdpr_fr)) en Europe, effectif depuis le 25 mai 2018, nous sommes tenus de vous informer et de demander votre accord pour cela. Donc, en cliquant sur le bouton ci-dessous, vous marquez expressément votre accord pour que ces données puissent être collectées et utilisées dans le but d'analyser votre progression pour (1) vous aider, et (2) améliorer ces tutoriaux. Ces données pourront également servir à des études globales (évaluation des résultats globaux par année et au fil du temps, ou évaluation globale de la méthode d'apprentissage par exemple, y compris dans des publications scientifiques). Dans ce dernier cas, les données seront rendues anonymes. Seuls vos enseignants pourront utiliser ces données de manière non anonymes dans le cadre de votre évaluation, et les détails de cette évaluation ne seront nommément accessibles que par vous-même.
3334

3435

3536
## Introduction
@@ -71,6 +72,10 @@ Voici un premier exemple simple:
7172
15 * 23
7273
```
7374

75+
```{r calcul1-check}
76+
# Not yet...
77+
```
78+
7479
Vous pouvez également utiliser des fonctions mathématiques directement implementées dans R comme le logarithme népérien avec la **fonction** `log()`. Ce language a été mis au point pour suivre les conventions des mathématiques et des statistiques comme le respect de l'ordre des opérations.
7580

7681
```{r, echo=TRUE}
@@ -138,14 +143,14 @@ v3 <- c("noir", "jaune", "rouge")
138143

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

141-
- Assignez à `v5` la multiplication de `v4` par `4`.
146+
- Assignez à `v5` la multiplication de `v4` par `6`.
142147

143148
- Terminez par affichez les valeurs contenues dans `v5` en écrivant simplement le noms de la variable comme seule instruction dans une ligne.
144149

145150
```{r vec1, exercise=TRUE, exercise.lines=6}
146151
# Assignation des valeurs à v4
147152
v4 <-
148-
# Multipliez v4 par 4 et assignez-le à v5
153+
# Multipliez v4 par 6 et assignez-le à v5
149154
150155
# Affichez le résultat contenu dans v5
151156
@@ -193,6 +198,12 @@ Certaines fonctions servent à **résumer** un ensemble de données, c'est-à-di
193198
?mean
194199
```
195200

201+
<center>
202+
203+
![](images/help_mean.png)
204+
205+
</center>
206+
196207
Les fonctions sont largement documentées. Dans la page d'aide, vous pourrez trouver des informations sur les **arguments** de la fonction. Les arguments d'une fonction sont des valeurs nommées `nom = valeur` rentrées à l'intérieur de la parenthèse qui suit le nom de la fonction. Les différents arguments sont par ailleurs séparés par des virgules à l'intérieur de la parenthèse. Ces arguments fournissent les données à traiter, mais peuvent aussi être des informations qui vont moduler le calcul à réaliser.
197208

198209
Un argument est intéressant ici : `na.rm = `. Cet argument détermine si les valeurs manquantes sont éliminées du vecteur avant calcul ou non ("**na** **r**e**m**ove"). Comme vous pouvez le voir dans la page d'aide, cet argument prend la valeur `FALSE` par défaut. Cela signifie que les valeurs manquantes ne sont **pas** éliminées par défaut. Mais il est possible d'indiquer `na.rm = TRUE` pour changer le calcul et obtenir quand même une estimation de moyenne en présence de valeurs manquantes (les constantes `TRUE` et `FALSE`, toujours en majuscules, sont les valeurs logiques dans R -objects `logical`- voulant dire "vrai" ou "faux").
@@ -226,7 +237,7 @@ Bravo! Vous venez de terminez cette séance d'exercices dans un tutorial "learn
226237
Durant cette séance, vous avez appris à :
227238

228239
- Effectuer des calculs dans R
229-
- Créer des vecteurs et vectoriser vos claculs
240+
- Créer des vecteurs et vectoriser vos calculs
230241
- Assigner les résultats à un nom
231242
- Employer des fonctions, et accéder à leurs pages d'aide
232243
- Manipuler les valeurs manquantes, et les calculs en leur présence
@@ -237,3 +248,7 @@ Laissez nous vos impressions sur cet outil pédagogique. Rappelez-vous que pour
237248
# Ajout de commentaires
238249
# ...
239250
```
251+
252+
**Pour aller plus loin...**
253+
254+
- [Ce tutorial](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.

0 commit comments

Comments
 (0)