df.moodle {SARP.moodle} | R Documentation |
Convertir une data.frame en questions Moodle
Description
Cette fonction permet de convertir une data.frame, convenablement construit, en un fichier XML de questions pour Moodle
Usage
df.moodle( d,
colonne.texte = NA, colonne.reponse = NA,
colonne.note = NA, colonne.note_question = NA,
colonne.titre = NA,
colonne.code = NA, colonne.type = NA,
colonne.retour = NA, colonne.global = NA,
colonne.penalite = NA,
colonne.temps = NA, colonne.decimale = NA,
fichier.xml,
creer.titre = TRUE, lg.titre = 30,
embellir = TRUE, deja.HTML = FALSE,
forcer.multiple = TRUE, melanger.reponses = TRUE,
somme.nulle = FALSE, precision = 3,
categorie.base = "",
dossier.images,
sep.images = c( '@@', '@@' ), inserer.images = TRUE,
sep.formules = c( '@\\$', '\\$@' ),
sep.SMILES = c( '@\\{', '\\}@' ),
nom.fichier = deparse( substitute( d ) ) )
Arguments
d |
La data.frame à convertir. |
colonne.texte |
Le nom ou le numéro de la colonne qui contient l'énoncé des questions. Si elle n'est pas indiquée, une colonne intitulée « Texte » est cherchée dans le fichier. Cette colonne est obligatoire. |
colonne.reponse |
Le nom ou le numéro de la colonne qui contient la ou les réponses aux questions. Si elle n'est pas indiquée, une colonne intitulée « Réponse » est cherchée dans le fichier. Cette colonne est obligatoire. |
colonne.note |
Le nom ou le numéro de la colonne qui contient la note associée à chaque réponse. Si elle n'est pas indiquée, une colonne intitulée « Note » (insensible à la casse) est cherchée dans le fichier. Cette colonne est obligatoire en cas de question à réponses multiples. Elle peut alors contenir soit le pourcentage de la note (voir les détails), soit « Vrai » ou « Faux » (insensible à la casse) et les pourcentages sont calculés en conséquence (avec toujours 0 pour « Faux » : indiquez explicitement un pourcentage négatif si nécessaire). |
colonne.note_question |
Le nom ou le numéro de la colonne qui contient la note globale de la question. Si elle n'est pas indiquée, une colonne intitulée « Note question » (insensible à la casse) est cherchée dans le fichier. Cette colonne est facultative. Si elle existe, elle doit contenir un entier strictement positif donnant la note globale de la question, ou rester vide. Toute note non indiquée sera supposée égale à 1 (valeur par défaut de Moodle). |
colonne.titre |
Le nom ou le numéro de la colonne qui contient le titre à donner à
la question dans Moodle. Si elle est manquante, le titre est
construit, sous la forme |
colonne.code |
Le nom ou le numéro de la colonne qui contient le code de la
question. Cette colonne n'est obligatoire que pour créer des
questions « cloze ». Si elle est manquante, un code interne de la
forme |
colonne.type |
Le nom ou le numéro de la colonne qui contient le type de la
question. Cette colonne peut être utilisée pour indiquer qu'une
question avec plusieurs réponses proposées n'a qu'une seule réponse
possible, en indiquant QCU pour au moins une des réponses (question
à choix unique); QCM permet d'indiquer que l'on peut cocher
plusieurs réponses (question à choix multiples). Dans ce cas,
|
colonne.retour |
Le nom ou le numéro de la colonne qui contient le commentaire à afficher pour chaque réponse. Cette colonne est facultative. |
colonne.global |
Le nom ou le numéro de la colonne qui contient le commentaire à afficher globalement pour la question. Cette colonne est facultative. |
colonne.penalite |
Le nom ou le numéro de la colonne qui contient la pénalité à mettre en cas de nouvelle tentative de la question. Si elle n'est pas indiquée, une colonne intitulée « Pénalité » (insensible à la casse) est cherchée dans le fichier. Cette colonne est facultative. Si elle existe, elle doit contenir la fraction de la note globale de la question qui sera prise en compte pour noter la nouvelle tentative (par exemple, si la question a une note globale de 2 et la pénalité est de 0,5, à la seconde tentative la note maximale possible sera de 1) ou rester vide. Toute pénalité non indiquée sera supposée égale à 1 (pas de pénalité en cas de nouvelle tentative). |
colonne.temps |
Le nom ou le numéro de la colonne qui contient le temps conseillé pour la question. Cette colonne est facultative. Lorsqu'elle est présente, et renseignée, un texte indiquant le temps conseillé pour répondre est ajouté à l'énoncé de la question. |
colonne.decimale |
Le nom ou le numéro de la colonne qui contient le nombre de chiffres après la virgule attendu pour la réponse à la question (pour les questions numériques uniquement). Cette colonne est facultative. |
fichier.xml |
Le nom du fichier XML, créé avec
|
creer.titre |
Une valeur logique indiquant si l'on veut créer un titre pour chaque
question, à partir de son code et du début de son énoncé
( |
lg.titre |
Le nombre de caractères de l'énoncé d'une question à conserver pour
construire son titre. Ignoré si une colonne de titres a été fournie
ou si |
embellir , deja.HTML |
Actuellement inutilisés, prévus pour une version future |
forcer.multiple |
Si |
melanger.reponses |
Si |
somme.nulle |
Cette option précise comment gérer les réponses incorrectes dans un
QCM. Si |
precision |
Le nombre de décimales à donner dans la réponse, pour
une réponse numérique (utilisez |
categorie.base |
La catégorie de base à utiliser pour créer les questions. Elle contiendra toutes les sous-catégories du fichier, s'il y en a. |
dossier.images |
Le dossier d'image où trouver les images à
intégrer au fichier XML, ou l'URL de base pour les trouver dans
Moodle (voir |
sep.images |
Les codes servant à encadrer un nom d'image dans les textes du fichier CSV. |
inserer.images |
Si |
sep.formules |
Les codes servant à encadrer une formule mathématique à convertir grâce à latex dans les textes du fichier CSV. |
sep.SMILES |
Les codes servant à encadrer un code SMILES à convertir en formule chimique grâce à openbabel dans les textes du fichier CSV. |
nom.fichier |
Le nom à utiliser pour créer les titres et la catégorie de base des questions générées à partir de cette data.frame. |
Details
Cette fonctions réalise la conversion d'une data.frame de questions pour Moodle en un fichier XML. La nature des questions est déduite de la structure de la data.frame.
Cette data.frame doit comporter au moins deux colonnes : l'une avec les énoncés des questions et l'autre avec les réponses. Chaque ligne correspond à une réponse possible.
S'il y a un énoncé, mais pas de réponse, cet énoncé est supposé être
une indication de catégorie (sauf si la question a le même code qu'une
question « cloze », voir plus loin, ou si la colonne précisant le type
de question indique un type particulier) qui sera créée comme une
sous-catégorie de la catégorie de base, par un appel à
categorie.moodle
.
Pour les questions simples, la question tient sur une ligne. La nature
de la question est déduite de la réponse. Si la réponse peut être
convertie en nombre, la question est supposée être une réponse
numérique; elle sera créée avec un appel à
numerique.moodle
. Si la réponse est identifiée comme
une valeur logique (un des textes « V », « F », « T », « Vrai », «
Faux », « True » ou « False », quelle que soit la casse), la question
est supposée être une question binaire avec les deux réponses « Vrai »
et « Faux »; elle sera créée avec un appel à
vrai_faux.moodle
. Dans tous les autres cas, la question
est supposée être à réponse ouverte et courte et sera créée par un
appel à qroc.moodle
.
S'il y a une réponse, mais pas d'énoncé, cette réponse est supposée
être une autre réponse possible à une question à choix multiple, dont
l'énoncé est dans la première ligne précédente qui en contient un.
Dans ce cas, le fichier doit contenir une colonne qui contient les
notes associées à chaque réponse. Cette note peut être précise,
exprimée en pourcentage suivant la convention Moodle, ou indicative,
avec la simple mention « Vrai » pour les bonnes réponses et « Faux »
pour les mauvaises. Dans le deuxième cas, les bonnes réponses sont
associées à l'inverse du nombre de bonnes réponses, de sorte que
cocher toutes les bonnes réponses donne la note totale; les mauvaises
réponses sont associées à la note 0 (si somme.nulle=FALSE
:
cocher ou non ces réponses ne change rien à la note) ou à l'opposé de
l'inverse du nombre de mauvaises réponses (si somme.nulle=TRUE
:
cocher ces réponses diminue la note et cocher toutes les réponses
donne une somme nulle). Par défaut, la question construite est
toujours un QCM (plusieurs réponses peuvent être choisies), même s'il
y a une seule bonne réponse. Pour demander qu'une seule réponse puisse
être choisie (QCU), indiquez le type QCU dans la colonne indiquée par
colonne.type
pour la question considérée. Si vous voulez que
toutes les questions avec une seule bonne réponse soient en QCU, vous
pouvez aussi utiliser l'option forcer.multiple = FALSE
.
Construire des questions “cloze”
Pour pouvoir construire des questions “cloze”, le fichier doit obligatoirement contenir une colonne qui indique le code de chaque question (y compris les catégories). Ce code doit être unique pour une même question; toutes les lignes qui auront le même code seront donc considérées comme faisant partie de la même question.
De ce fait, si plusieurs lignes d'énoncé renseignées ont le même code,
elles sont considérées faisant partie de la même question et sont
utilisées pour construire une question “cloze”, selon le
même principe que la fonction question_libre.moodle
:
après chaque partie d'énoncé, un champ de réponse est créé, dont la
bonne réponse est celle indiquée dans la colonne
colonne.reponse
et sert à définir le type de champ de réponse
(selon la logique des questions en une ligne). Pour avoir un texte
après le dernier champ de réponse, laissez la colonne
colonne.reponse
vide tout en gardant le même code de question.
Pour avoir des questions avec réponse à choisir dans une liste, mettez
une réponse par ligne sans mettre d'énoncé avant, comme pour un QCM.
La colonne colonne.type
permet de préciser le type d'affichage,
avec les codes Moodle (MULTICHOICE
, MULTICHOICE_S
...).
Il est possible d'abréger le code: M correspond à un choix dans un
menu déroulant (une seule réponse possible ; MULTICHOICE
) ; H,
à des réponses juxtaposés (MULTICHOICE_H
) ; V, à des réponses
superposées (MULTICHOICE_V
) ; SA, à un champ libre attendant
une réponse courte, de type Q. R. O. C. (SHORTANSWER
). Pour
les réponses superposées ou juxtaposés, par défaut, une seule réponse
peut être choisie et l'ordre est celui indiqué dans le fichier. Il est
possible d'indiquer que plusieurs réponses peuvent être choisies en
ajoutant le code M (VM, HM) ; il est possible de demander à Moodle de
tirer au sort l'ordre des réponses en ajoutant le code A (MA, VA,
VMA...) ou S (MS, VS...). Pour le champ libre, par défaut la casse
est ignorée. Il est possible d'indiquer que la casse doit être
contrôlée grâce au code SAC (SHORTANSWER_C
). L'ordre des codes
n'a pas d'importance (HM et MH donneront tous deux une question de
type MULTICHOICE_H
).
Insérer des images
Il est possible de faire référence à une image dans les textes
(énoncés, réponses, commentaires) en encadrant le nom de fichier de
l'image par les séparateurs choisis, par défaut @@
. Il est
possible de redimensionner l'image en faisant suivre le nom de l'image
d'un point d'exclamation, puis de la largeur, du caractère x et de la
hauteur. Attention, il semblerait que Moodle ne déforme pas les
images, quelles que soient les dimensions demandées. Par défaut,
l'image sera incluse au fichier XML.
Deux types d'image peuvent être créés au vol : les formules
mathématiques et les formules chimiques. Voir les fonctions
inserer_formule.moodle
et
inserer_SMILES.moodle
pour plus de détails.
Value
De façon invisible, une liste des data.frames des questions après traitement de chaque fichier. Elle n'a guère d'autre intérêt que pour détecter l'origine d'un problème de conversion.
Attention!
Moodle est assez peu permissif pour les notes exprimées en pourcentage; en particulier, lorsque ce pourcentage ne tombe pas juste (33% pour trois bonnes réponses, par exemple), à cause de l'arrondi il peut rejeter le fichier créé. Dans ce cas, désactivez l'arrêt en cas d'erreur et demandez l'arrondi à la note la plus proche pour pouvoir importer les questions.
Author(s)
Emmanuel Curis emmanuel.curis@parisdescartes.fr
See Also
Les fonctions de base de création de questions pour plus de souplesse, et en particulier pour créer des questions non gérées par le format de fichier ci-dessus.
Examples
# Conversion du fichier d'exemple fourni
# (à placer dans le répertoire de travail)
## Not run:
csv.moodle( "exemple_Moodle.csv", colonne.code = "Code" )
## End(Not run)