【问题标题】:Different orders of questions in exams2pdf() from R/exams来自 R/exams 的exams2pdf() 中不同的问题顺序
【发布时间】:2019-07-24 19:28:53
【问题描述】:

我正在使用 R 包exams。我正在尝试使用 R/exams 生成完全相同考试的四个版本,但每个版本都有不同的问题顺序。另外,我想完全控制订单。例如,如果我有四个问题(1-2-3-4),我想生成版本:(2-3-1-4)(3-1-4-2)(2-1-3-4)(1-4-2-3)。这是我可以使用的代码:

base.order = list("tstat2.Rmd","Cholesky.Rmd","boxhist.Rmd","confint.Rmd")
order1 = base.order[c(2,3,1,4)]
order2 = base.order[c(3,1,4,2)]
order3 = base.order[c(2,1,3,4)]
order4 = base.order[c(1,4,2,3)]
set.seed(1322)
exams2pdf(order1,template="exam")
set.seed(1322)
exams2pdf(order2,template="exam")
set.seed(1322)
exams2pdf(order3,template="exam")
set.seed(1322)
exams2pdf(order4,template="exam")

问题是不同版本中的同一个问题使用不同的数字。怎么解决?

【问题讨论】:

  • 你想做什么?使用哪种编程语言,请详细说明。
  • 抱歉,这是我在 Stack Exchange 上的第一个问题。该问题与 R 包考试有关(另请参阅 r-exams.org)。
  • @francis 很抱歉在 SO 上忽略了这一点......并且只在 R-Forge 的 R/exams 论坛中回复 (r-forge.r-project.org/forum/…)。为了将问题标记为已解决,我将在此处重新发布我的答案。如果这没有(完全)解决问题,请告诉我。

标签: r r-exams


【解决方案1】:

今天在 R-Forge 上的 R/exams 开发版本中添加了一个替代解决方案。可以用install.packages("exams", repos="http://R-Forge.R-project.org")安装。

新版本允许提供练习矩阵files,其中行对应于不同的考试,列对应于考试中所需的确切练习顺序。此外,可以提供在处理相应练习之前立即设置的随机seeds 的相应矩阵。通常,种子会因考试而异,但当然,这也可用于在此处根据需要将种子固定为跨考试相同。

首先,我们定义练习向量和期望排列矩阵:

exc <- c("tstat2.Rmd","cholesky.Rmd","boxhist.Rmd","confint.Rmd")
idx <- rbind(c(2, 3, 1, 4), c(3, 1, 4, 2), c(2, 1, 3, 4), c(1, 4, 2, 3))

然后,我们生成一个随机种子的随机向量(当然你也可以手动预选想要的种子):

set.seed(1)
rsd <- sample(1:9999, 4)

基于这些我们可以将练习文件和种子设置为矩阵

exc <- exc[idx]
rsd <- rsd[idx]
dim(exc) <- dim(rsd) <- dim(idx)
exc
##      [,1]           [,2]          [,3]           [,4]          
## [1,] "cholesky.Rmd" "boxhist.Rmd" "tstat2.Rmd"   "confint.Rmd" 
## [2,] "boxhist.Rmd"  "tstat2.Rmd"  "confint.Rmd"  "cholesky.Rmd"
## [3,] "cholesky.Rmd" "tstat2.Rmd"  "boxhist.Rmd"  "confint.Rmd" 
## [4,] "tstat2.Rmd"   "confint.Rmd" "cholesky.Rmd" "boxhist.Rmd" 
rsd
##      [,1] [,2] [,3] [,4]
## [1,] 8004 4775 1017 9725
## [2,] 4775 1017 9725 8004
## [3,] 8004 1017 4775 9725
## [4,] 1017 9725 8004 4775

然后最后可以使用任何template 生成考试,例如:

library("exams")
exams2pdf(exc, seed = rsd, template = "exam.tex")

与使用四个不同模板生成单个考试的其他答案相比:

  • exams2pdf() 很清楚,因此在其相应的元信息中包含四个不同的考试,具有不同的练习顺序。
  • 练习在考试中完全相同的事实仅被隐式存储 - 因为种子相同。

【讨论】:

    【解决方案2】:

    要使用 R/exams 中的 exams2pdf() 生成同一考试的不同版本,最简单的解决方案是使用不同的模板。并且要修复排序,您可以替换

    %% \exinput{exercises}
    

    使用\input{} 语句进行所需练习,例如,

    \input{exercise2}
    \input{exercise3}
    \input{exercise1}
    \input{exercise4}
    

    最初,我们引入此功能是为了允许在某些练习之间使用文本或进一步的特殊格式。但它也可用于更改排序。在 https://R-Forge.R-project.org/forum/attachment.php?attachid=395&group_id=1337&forum_id=4377 我创建了一个 .zip 文件,其中包含四个版本 (A-D) 的纯 .tex 文件,具有不同的所需顺序。有了这个你可以这样做:

    base.order <- list("tstat2.Rmd","cholesky.Rmd","boxhist.Rmd","confint.Rmd")
    exams2pdf(base.order,
      template = c("plainA", "plainB", "plainC", "plainC", "plainD"))
    

    一个潜在的警告是,它只存储一次元信息。因此,在纠正考试时,您必须重新排列解决方案,因为排列未存储在元信息中。一种可能的策略是向exams2pdf() 编写一个小的包装函数,它(a) 创建一个具有排列的矩阵,(b) 生成修改后的.tex 模板,(c) 存储所有必要的元信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多