使用exams包生成含固定试题的随机试卷:如何打乱试题顺序
解决R exams包生成含固定试题且随机排序试卷的问题
核心问题分析
你之前的代码存在两个关键问题:
- 第一个代码未启用题目顺序打乱功能,导致固定试题始终位于首位;
- 后两个代码提前完成了剩余试题的抽样与排序,生成的多份试卷会使用同一组试题,无法实现“每位学生试卷不同”的需求,还可能因语法错误导致试题遗漏。
正确实现代码
library(exams) # 指定必须包含的固定试题路径 fixed_question <- "questions/a.Rmd" # 获取questions文件夹下所有试题的完整路径 all_questions <- paste0("questions/", dir(path = "questions")) # 筛选出除固定试题外的剩余试题 remaining_questions <- setdiff(all_questions, fixed_question) # 构建试题池:第一个元素是固定试题,第二个是剩余试题集合 exam_pool <- list(fixed_question, remaining_questions) # 设置各部分抽取数量:固定题抽1道,剩余题抽9道 nsamp_config <- c(1, 9) # 生成5份试卷,shuffle=TRUE会打乱所有10道题的顺序 exams2pdf(exam_pool, n = 5, nsamp = nsamp_config, shuffle = TRUE)
关键说明
shuffle = TRUE:这个参数会将抽取后的所有试题(固定题+随机抽取的9道题)整体打乱顺序,彻底解决固定题始终在首位的问题;- 动态抽样:通过
list结构+nsamp参数,每份试卷都会重新从剩余试题中抽取9道,确保不同学生的试卷试题组合不同; - 修正语法错误:之前的
setdiff参数写法有误,正确写法是先生成所有试题路径,再用setdiff排除固定试题,避免剩余试题列表错误。
内容的提问来源于stack exchange,提问作者JayBee
相关产品推荐
相关产品推荐

