Charlie Asked: 2024-11-26 23:18:20 +0800 CST2024-11-26 23:18:20 +0800 CST 2024-11-26 23:18:20 +0800 CST 使用 exams2webquiz 和 exams2openolat 时获取相同的问题集 772 exams2webquiz 有一个种子参数,但 exams2openolat 没有。除了手动为每个问题指定种子并修复问题选择方面之外,还有其他直接的解决方案吗?我可以生成某种通用问题集,然后将其保存并转换为相关格式吗? r-exams 2 个回答 Voted Best Answer Achim Zeileis 2024-11-27T19:31:56+08:002024-11-27T19:31:56+08:00 总结 不幸的是,目前还没有合适且直接的解决方案。请参阅下面的一个变通方法,帮助实现您问题中的种子策略。 细节: 一般情况下,一个界面的结果并不总是可以exams2xyz在另一个exams2xyz界面中使用,因为可能需要对练习进行不同的处理(例如,关于文本的标记、图形的类型、某些补充的嵌入方式等)。因此,通常建议从源练习重新开始。 有时在调用不同的接口之前设置相同的随机 ID 就足够了exams2xyz。然而,exams2openolat这并不足够,因为在练习之间会为多个 XML 元素生成随机 ID。 我们用于其他接口的一种解决方法是指定一个file矩阵,该矩阵准确指示在哪个复制中应使用哪个练习文件。然后我们可以提供一个seed相同维度的随机矩阵。将此功能添加到 或多或少是简单的exams2openolat。但在 中exams2webquiz需要做更多的工作,因为它的结构略有不同。 解决方法: 如果您不想将固定种子放入 Rmd(或 Rnw)练习中,您可以通过即时执行此操作expar()。对于给定的练习,例如myexercise.Rmd,在第一个代码块中包含以下内容(如果尚不存在,则添加代码块): seed <- NULL if(!is.null(seed)) set.seed(seed) 因此,如果你运行,exams2xyz("myexercise.Rmd")则什么也不会发生,也不会设置随机种子。但是如果你使用,则会在临时目录中exams2xyz(expar("myexercise.Rmd", seed = 123))内部创建一个副本,其中上面的行被替换为myexercise.Rmd seed <- 123 因此,有了这个主意,您就可以运行expar(..., seed = ...)所有想要放入测试中的练习,从而创建这些练习的静态副本。然后您可以在exams2webquiz()和中使用这些静态副本exams2openolat()。 Anuj Goyal 2024-11-26T23:20:55+08:002024-11-26T23:20:55+08:00 预先生成固定问题集 您可以生成一次固定问题集并将其保存为中性格式。这确保同一组问题可以重复用于 exams2webquiz 和 exams2openolat。 步骤:使用 exams2xyz 以某种格式(例如 exams2webquiz)的种子生成一致的问题集。将生成的问题集保存为静态文件,例如 JSON、XML 或 RDS(R 数据文件),以供重复使用。在为两种格式创建输出时,请读取静态文件。
总结
不幸的是,目前还没有合适且直接的解决方案。请参阅下面的一个变通方法,帮助实现您问题中的种子策略。
细节:
一般情况下,一个界面的结果并不总是可以
exams2xyz
在另一个exams2xyz
界面中使用,因为可能需要对练习进行不同的处理(例如,关于文本的标记、图形的类型、某些补充的嵌入方式等)。因此,通常建议从源练习重新开始。有时在调用不同的接口之前设置相同的随机 ID 就足够了
exams2xyz
。然而,exams2openolat
这并不足够,因为在练习之间会为多个 XML 元素生成随机 ID。我们用于其他接口的一种解决方法是指定一个
file
矩阵,该矩阵准确指示在哪个复制中应使用哪个练习文件。然后我们可以提供一个seed
相同维度的随机矩阵。将此功能添加到 或多或少是简单的exams2openolat
。但在 中exams2webquiz
需要做更多的工作,因为它的结构略有不同。解决方法:
如果您不想将固定种子放入 Rmd(或 Rnw)练习中,您可以通过即时执行此操作
expar()
。对于给定的练习,例如myexercise.Rmd
,在第一个代码块中包含以下内容(如果尚不存在,则添加代码块):因此,如果你运行,
exams2xyz("myexercise.Rmd")
则什么也不会发生,也不会设置随机种子。但是如果你使用,则会在临时目录中exams2xyz(expar("myexercise.Rmd", seed = 123))
内部创建一个副本,其中上面的行被替换为myexercise.Rmd
因此,有了这个主意,您就可以运行
expar(..., seed = ...)
所有想要放入测试中的练习,从而创建这些练习的静态副本。然后您可以在exams2webquiz()
和中使用这些静态副本exams2openolat()
。步骤:使用 exams2xyz 以某种格式(例如 exams2webquiz)的种子生成一致的问题集。将生成的问题集保存为静态文件,例如 JSON、XML 或 RDS(R 数据文件),以供重复使用。在为两种格式创建输出时,请读取静态文件。