如何在 exshuffle 打开时更改问题的正确答案并从头开始复制考试(包 'exams')?
How to change the correct answer of a question and replicate exams from scratch when exshuffle is on (package 'exams')?
我有以下问题,其中 \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}),因此分配给这个特定问题的分数是错误的。其他问题都可以。
由于 exshuffle
的实施方式,仅更改 {answerlist}
and/or 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个元素(练习),其中有元素question
、questionlist
、solution
、solutionlist
、metainfo
和 supplements
。在这里,我们需要检查 questionlist
以修复 metainfo$solution
。目前,维也纳被标记为正确:
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
.
就足够了
我有以下问题,其中 \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}),因此分配给这个特定问题的分数是错误的。其他问题都可以。
由于 exshuffle
的实施方式,仅更改 {answerlist}
and/or 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个元素(练习),其中有元素question
、questionlist
、solution
、solutionlist
、metainfo
和 supplements
。在这里,我们需要检查 questionlist
以修复 metainfo$solution
。目前,维也纳被标记为正确:
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
.