I have about 400 exams in which I defined a custom ID (using the function exams2nops). However, when I use nops_scan none of the IDs is recognized... example:
Is it due to the number of characters in the exam ID?
I have about 400 exams in which I defined a custom ID (using the function exams2nops). However, when I use nops_scan none of the IDs is recognized... example:
Is it due to the number of characters in the exam ID?
Yes, the exam ID needs to have exactly 11 digits. I will add a warning about this to exams2nops().
The "culprit" is this line from the internal read_nops_digits() function:
body(exams:::read_nops_digits)[[6]]
## n <- switch(type, type = 3L, id = 11L, scrambling = 2L)
Thus, when reading the id, the function expects 11 digits. However, I was pleasantly surprised that if you change this 11L to 5L then everything seems to work. You can do so programmatically by making a copy f of this function, changing the 11L to 5L, and overwriting the function in the exams package namespace:
library("exams")
f <- exams:::read_nops_digits
body(f)[[c(6, 3, 4)]] <- 5L
assignInNamespace("read_nops_digits", f, ns = "exams")
After that running nops_scan() should work as needed in your case.
Additional comment: Instead of overwriting the read_nops_digits() function programmatically as above, you can also modify the function "by hand" using an editor via:
fixInNamespace("read_nops_digits", ns = "exams")