`nops_eval`不是读考号,怎么控制读考号?

`nops_eval` is not reading the exam ID, how can I control the exam ID reading?

我有大约 400 个考试,我在其中定义了一个自定义 ID(使用函数 exams2nops)。但是,当我使用 nops_scan none 时,ID 被识别...示例:

考试样本:

是考号字符数的问题吗?

是的,考试 ID 需要正好有 11 位数字。我将在 exams2nops().

中添加关于此的警告

“罪魁祸首”是来自内部 read_nops_digits() 函数的这一行:

body(exams:::read_nops_digits)[[6]]
## n <- switch(type, type = 3L, id = 11L, scrambling = 2L)

因此,当读取 id 时,该函数需要 11 位数字。但是,令我惊喜的是,如果将此 11L 更改为 5L 那么一切似乎都有效。您可以通过复制此函​​数的 f、将 11L 更改为 5L 并覆盖 exams 包命名空间中的函数来以编程方式执行此操作:

library("exams")
f <- exams:::read_nops_digits
body(f)[[c(6, 3, 4)]] <- 5L
assignInNamespace("read_nops_digits", f, ns = "exams")

在那之后 运行 nops_scan() 应该可以根据您的情况工作。

附加评论: 除了像上面那样以编程方式覆盖 read_nops_digits() 函数,您还可以使用编辑器“手动”修改函数,方法是:

fixInNamespace("read_nops_digits", ns = "exams")