【问题标题】:How to change the correct answer of a question and replicate exams from scratch when exshuffle is on (package 'exams')?当 exshuffle 开启时如何更改问题的正确答案并从头开始复制考试(包“考试”)?
【发布时间】:2021-01-26 23:20:12
【问题描述】:

我有以下问题,其中 \exsolution 的参数是 {0010} 但它应该是 {1000}

\begin{question}
What is the capital of Italy

\begin{answerlist}
  \item Rome
  \item Paris
  \item Vienna
  \item Madrid
\end{answerlist}
\end{question}
\extype{schoice}
\exsolution{0010}
\exshuffle{4}

我已更正错误并使用相同的种子从头开始重新运行创建和评分考试的过程。不幸的是,这个问题的答案顺序发生了变化(注意 \exshuffle{4}),因此分配给这个特定问题的成绩是错误的。其他问题都OK。

【问题讨论】:

    标签: r-exams


    【解决方案1】:

    由于exshuffle 的实施方式,仅更改{answerlist} 和/或exsolution 并获得正确的结果考试并不容易。

    相反,我建议查看元信息并在那里修复它。我假设您正在使用exams2nops() 生成考试,并且已将 RDS 与元信息一起存储,对吧?我将通过以下方式生成这样的文件:

    set.seed(1)
    exams2nops(c("capitals.Rnw", "italy.Rnw", "switzerland.Rnw"), n = 5, dir = ".")
    

    因此,有五门考试,每门考试有 3 个练习题,您的有问题的练习题italy.Rnw 排在第二位。元信息存储在metainfo.rds 中,我们可以通过

    再次读取
    x <- readRDS("metainfo.rds")
    

    现在x 是一个包含 5 个元素(考试)的列表,每个元素都有 3 个元素(练习),其中有元素 questionquestionlistsolutionsolutionlistmetainfo、和supplements。在这里,我们需要检查questionlist 以修复metainfo$solution。目前,Vienna 被标记为正确:

    x[[1]][[2]]$questionlist
    ## [1] "Madrid" "Vienna" "Rome"   "Paris" 
    x[[1]][[2]]$metainfo$solution
    ## [1] FALSE  TRUE FALSE FALSE
    

    不过,应该是罗马:

    x[[1]][[2]]$questionlist == "Rome"
    ## [1] FALSE FALSE  TRUE FALSE
    

    所以我们可以循环并保存结果。为了安全起见,我们还存储了原始 RDS 文件:

    x <- readRDS("metainfo.rds")
    file.copy("metainfo.rds", "metainfo-orig.rds")
    for(i in seq_along(x)) {
      x[[i]][[2]]$metainfo$solution <- x[[i]][[2]]$questionlist == "Rome"
    }
    saveRDS(x, "metainfo.rds")
    

    最后说明:还有一个元素metainfo$string,在提取exams_metainfo()时用到。如果我们想使用它,我们还需要修复$string。但是对于nops_eval(),修复$solution就足够了。

    【讨论】:

    • 不错!然而,为了让它更有趣,这个问题是从两个问题池中随机选择的,即 c("italy.Rnw","germany.Rnw")。我想知道循环的内容是如何变化的。
    • for()循环内,你需要添加if(x[[i]][[2]]$metainfo$file == "italy"),这样$metainfo$solution的替换才会在metainfo$file是有问题的文件时进行。
    • 不客气!像这样的事情实际上是我在 R/exams 上投入这么多工作的部分原因。有时在使用大学提供的工具时,我会在某个时候碰壁,或者不得不做很多手动检查。在 R/exams 中,我至少会编写一些 R 代码来解决许多问题......
    • 说到这,我得到了两门不同注册号的考试,但根据相同的考试ID进行了更正。这有点令人沮丧。我不想后悔决定使用 r/exams...你以前经历过这样的事情吗?
    • 我看不出这里有什么问题。无论如何,它似乎与上一个问题无关。因此,请提供一个可重现的示例并发布一个新问题 - 无论是在 SO 上还是在我们关于 R-Forge 的讨论论坛中。 (后者对于需要迭代 cmet 而不是一个明确的单一答案的讨论更容易。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 2012-05-23
    • 1970-01-01
    相关资源
    最近更新 更多