首页 > 解决方案 > `nops_eval` 没有读取考试 ID,如何控制考试 ID 读取?

问题描述

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

在此处输入图像描述

考试样本: 在此处输入图像描述

是因为考试 ID 中的字符数吗?

标签: r-exams

解决方案


是的,考试 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​​数、更改11Lto5L并覆盖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")

推荐阅读