首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用带有learnr的checkr包?

如何使用带有learnr的checkr包?
EN

Stack Overflow用户
提问于 2018-06-10 09:35:50
回答 1查看 646关注 0票数 2

运动教程learnr包指的是checkr包:

查克包目前提供了与learnr兼容的代码检查功能。

(请注意,此引用会使而不是指向CRAN包查克。不幸的是,有一个重复的包名。)

但是在learnr教程中没有关于如何与checkr一起使用它的建议。另一方面,checkr中的vignette仍然是一个草案版本,讨论了一些高级问题,并且在learnr方面缺乏一个简单的例子。

我想要的是一个例子的具体程序。例如:如何使用two-plus-two示例检查学生输入,该示例由learnrR Markdown模板“交互式教程”提供。

因此,我的问题是:如何使用learnr来检查使用checkr包添加二加二所需的R代码?

也许这个问题应该使用新的标记(learnrcheckr),但我没有这样做的特权。

EN

回答 1

Stack Overflow用户

发布于 2018-06-10 09:57:15

经过多次实验,下列程序对我有效:

  1. 我已经开始了一个新的项目,并加载了Exercises模板“交互式教程”,并命名为“01-练习”。RStudio生成了一个名为"01-Exercises.Rmd“的文件夹。
  2. 我已经将行tutorial_options(exercise.checker = checkr::check_for_learnr)添加到"01-Exercises.Rmd“文件的安装块中。
  3. 我添加了一个带有标签two-and-two-check的新R块。(=与学生任务的块名相同,但添加了-check。)
  4. 在这个R块中,我只添加了一行check_two_and_two(USER_CODE),这将成为我的测试功能。
  5. 我在一个额外的脚本文件"check_test.R“中编写了一个测试函数check_test.R,并保存在一个文件夹"www”下。
  6. 我已经将这个脚本源源不断地输入到内存中。我从控制台运行rmarkdown::run("01-Exercises/01-Exercises.Rmd")

这是我的测试功能:

代码语言:javascript
复制
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.")
}

即使这对我有用:也许有一个更好(更有效)的解决方案?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50782349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档