You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用exams2nops生成nops试卷,如何随机调题序及解决报错?

解决方案

排查“仅支持每份试卷最多45道题”报错

  1. 修正题目文件获取逻辑:
    你之前用dput(dir("exercises/"))是错误用法,dput用于导出对象而非赋值。正确获取目标题目文件(过滤出Rmd/Rnw格式,避免无关文件干扰):
    myexam <- list.files("exercises/", pattern = "\\.(Rmd|Rnw)$", full.names = FALSE)
    # 强制校验题目数量为20
    stopifnot(length(myexam) == 20)
    
    如果length(myexam)结果超过20,说明目录中存在多余文件,需清理或调整pattern参数匹配你的题目文件格式。

生成180份顺序唯一的NOPS试卷

要保证180份试卷的题目顺序完全不重复,需手动生成不同的排列后逐个生成试卷(20道题的排列数远大于180,不会出现重复):

# 设置随机种子确保结果可重复
set.seed(123)

# 生成180个唯一的20道题排列索引
permutations <- replicate(180, sample(20), simplify = FALSE)

# 循环生成每份试卷,使用不同的题目顺序
for (i in seq_along(permutations)) {
  exams2nops(
    file = myexam[permutations[[i]]],  # 按当前排列顺序取题
    n = 1,                              # 每次生成1份试卷
    dir = "nops",
    edir = getwd(),
    encoding = "UTF-8",
    blank = 1,
    reglength = 8,
    samepage = TRUE,
    name = paste0("exam_", sprintf("%03d", i))  # 每份试卷命名区分
  )
}

解决“题目组长度不一致”报错

你之前将题目存入列表后使用nsamp参数的方式有误:

  • exams2nops的file参数接受题目文件名的字符向量,而非读取后的题目内容列表。如果用read_exam读取了题目,需将每个题目保存为单独文件后再用字符向量传入。
  • nsamp参数用于从多个题目组中抽样(比如每个组包含多道题,抽取其中几道),你的场景是所有题目独立,无需使用nsamp,直接传入全部题目文件的向量即可。

内容的提问来源于stack exchange,提问作者Ghassany

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 04:25:28