运行exams2learnr示例Rmd报Invalid 'definition' argument错误解决方法
错误原因
触发"Invalid 'definition' argument"报错的核心原因是参数传递层级错误:
allow_retry、incorrect这类控制learnr题目交互规则的参数,不属于exams2learnr()的顶层入参,直接写在函数参数层会被识别为无效的题目定义字段,最终触发解析报错。- 额外注意:如果没有提前将包内置的示例习题文件放到当前R工作目录,修正参数后还会触发文件不存在的错误,需要先完成文件准备。
解决步骤
- 准备示例文件
如果当前工作目录下没有swisscapital.Rmd文件,先执行以下代码将exams包内置的示例习题复制到本地:
exams::exams_skeleton(write = TRUE, markup = "markdown")
执行完成后,当前工作目录会生成exercises文件夹,内置示例文件都存放在该目录下,可直接将工作路径切换至该文件夹,或在调用函数时补全文件相对路径。如果已经手动把目标Rmd文件放到当前工作目录,可跳过这一步。
- 修正参数写法
将交互控制参数统一包裹在learnr_args列表中传入函数,正确执行代码如下:
library(exams2learnr) exams2learnr( file = "swisscapital.Rmd", learnr_args = list( allow_retry = TRUE, incorrect = "Incorrect, try again." ) )
小提示:批量生成多道learnr题目时,
learnr_args内的配置会统一应用到所有题目,不需要逐题重复设置。
内容的提问来源于stack exchange,提问作者Eduardo-Uresti
相关产品推荐
相关产品推荐

