r - 如何将 checkr 包与 learnr 一起使用?
问题描述
包的练习教程是指包:learnr
checkr
checkr包目前提供了与 learnr 兼容的代码检查功能。
(请注意,此引用不指向CRAN 包检查器。不幸的是,包名称重复。)
但在learnr
教程中没有建议如何将它与checkr
. 另一方面,小插曲checkr
仍然是草稿版本,讨论了高级问题,并且缺乏与learnr
.
我正在寻找的是一个模型示例的具体过程。例如:如何使用two-plus-two
示例检查学生输入,由learnr
R Markdown 模板“交互式教程”提供。
所以我的问题是:如何检查learnr
使用包添加二加二所需的 R 代码checkr
?
也许这个问题应该使用新标签(learnr
和checkr
),但我没有这样做的特权。
解决方案
经过多次实验,以下程序对我有用:
- 我已经开始了一个新项目并加载了 R Markdown 模板“交互式教程”并将其命名为“01-Exercises”。RStudio 生成了一个这个名称的文件夹,并将我的“01-Exercises.Rmd”放在这个文件夹中。
- 我已将该行添加
tutorial_options(exercise.checker = checkr::check_for_learnr)
到我的“01-Exercises.Rmd”文件的设置块中。 - 我添加了一个带有标签的新 R 块
two-and-two-check
。(= 与学生任务的块名称相同,但添加了-check
.) - 在这个 R 块中,我只添加了一行
check_two_and_two(USER_CODE)
,它将成为我的测试函数。 - 我
check_two_and_two
在一个额外的脚本文件“check_test.R”中编写了一个测试函数,并保存在一个文件夹“www”下。 - 我已经将此脚本源到内存中的函数中。我
rmarkdown::run("01-Exercises/01-Exercises.Rmd")
从控制台跑了。
这是我的测试功能:
check_two_and_two <- function(USER_CODE) {
code <- for_checkr(USER_CODE)
t1 <- line_where(code, insist(all(F == "+"), "Your operator is {{F}}. This is not the assigned task."))
if (failed(t1)) return(t1)
t2 <- line_where(code, insist(all(V == 4), "Your solution is {{V}}. This is not the result (= 4) asked for."))
if (failed(t2)) return(t2)
line_binding(code, 2 + 2, failif(FALSE, "The pattern did not match."), message = "The result is correct, but I was looking for 2 + 2.")
}
即使这对我有用:也许有更好(更有效)的解决方案?
推荐阅读
- git - gitignore:忽略新添加到 .gitignore 的文件
- python - 使用 python selenium 获取文本
- java - 在 JDBC 中使用 unnest(array[someArray]) 发送三个数组的异常
- angular - 如何在 angular2-markdown 的降价中包含降价
- ios - 如何从传输对象的列表类型中获取数据?(RealmSwift)
- python-3.x - 根据每行中的字符串对数据进行分类
- asp.net-mvc - 更改引导程序时导航栏无法正确显示
- javascript - 如何从 firebase 检索和显示与特定用户配置文件相关的数据
- php - 我正在尝试更新一个表并从不同的表中调用另一行
- mysql - 使用另一个表记录更新一个表