如何使用 R/exams 在完形填空题中添加子问题语句

How to add subquestion statements in a cloze question using R/exams

我需要一个 cloze 问题,其中包含一般性陈述和一些结果(随机数据和统计分析表),其中包括几个 schoice 问题,每个问题都有自己的陈述。但我不知道应该如何包含子问题语句。一个简单的例子 cloze0.Rmd 如下所示。我需要使用命令 exams2moodle("cloze0.Rmd", n = 30, name = "Simple_Cloze0", rule = 'none', schoice = list(shuffle = T), verbose = T) 将此 cloze 问题的 30 个不同版本导出到 moodle,但此命令包含第一个子问题语句作为响应选项,并在所有子问题中错放正确答案。非常感谢任何想法!

cloze0.Rmd ==> (moodle-result) ==> (needed-moodle-result)

```{r data generation, echo = FALSE, results = "hide"}
# sample
dt <- rnorm(30, 100, 5)

# Statistics
ndt <- length(dt)
mdt <- mean(dt)
sdt <- sd(dt)
vdt <- var(dt)
cvdt <- sdt/abs(mdt)
```                              

Question
========
A sample of **`r ndt`** individuals is draw and a variable $X$ is measured.

```{r, echo = F, comment = NA}
dt
```

Answerlist
----------
Choose the mean of $X$.
* `r mdt`.
* `r sdt`.
* `r vdt`.
* `r cvdt`.

Choose the standard deviation of $X$.
* `r mdt`.
* `r sdt`.
* `r vdt`.
* `r cvdt`.

Choose the variance of $X$.
* `r mdt`.
* `r sdt`.
* `r vdt`.
* `r cvdt`.

Choose the coefficient of variation of $X$.
* `r mdt`.
* `r sdt`.
* `r vdt`.
* `r cvdt`.

Meta-information
================
exname: simple_cloze
extype: cloze
exsolution: 1000|0100|0010|0001
exclozetype: schoice|schoice|schoice|schoice
extol: 0|0|0|0
exshuffle: TRUE

如果您想要对完形填空练习的格式进行这种控制,那么最好使用 ##ANSWERi## 语法或将答案交互字段放在您需要的地方。有关有效示例,请参阅 boxhist2 练习。

对于你的情况,我会在 Answerlist 之前提出以下问题:

a. Choose the mean of $X$: \#\#ANSWER1\#\#
b. Choose the standard deviation of $X$: \#\#ANSWER2\#\#
c. Choose the variance of $X$: \#\#ANSWER3\#\#
d. Choose the coefficient of variation of $X$: \#\#ANSWER4\#\#

然后 Answerlist 看起来像这样:

Answerlist
----------
* `r mdt`.
* `r sdt`.
* `r vdt`.
* `r cvdt`.
* `r mdt`.
* `r sdt`.
...

请注意,您也可以执行以下操作来创建整个 Answerlist

,而不是手动列出所有四个统计信息四次
```{r, echo=FALSE, results="asis"}
answerlist(rep(c(mdt, sdt, vdt, cvdt), 4), markup = "markdown")
```

我还会对答案进行四舍五入,例如三位数。 (好吧,就个人而言,我会创建一个包含四个“num”项而不是“schoice”项的完形填空题。)

默认

exams2moodle("cloze0.Rmw")

将为四个选项列表中的每一个创建下拉菜单(在 Moodle 中显示 "MULTICHOICE")。如果你真的想要垂直布局的单选按钮(显示 "MULTICHOICE_V"),你可以切换到:

exams2moodle("cloze0.Rmd",
  cloze = list(cloze_mchoice_display = "MULTICHOICE_V"))

请注意,exams2moodle() 的最新版本(至少 2.4-0,R-Forge 上的当前开发版本)参数称为 cloze_schoice_display 而不是 cloze_mchoice_display