如何使用学习者的checkr包?

时间:2018-06-10 09:35:50

标签: r r-markdown

learnrcheckr包引用了learnr个包裹:

  

exercise tutorial包目前提供与学习者兼容的代码检查功能。

(请注意,此引用指向CRAN包checkr。不幸的是,包名称重复。)

但在checkr教程中,没有建议如何与checkr一起使用它。另一方面,learnr中的插图仍然是草稿版本,讨论了高级问题,并且缺少与two-plus-two相关的简单示例。

我正在寻找的是模型示例的具体过程。例如:如何使用learnr R Markdown模板“交互式教程”提供的learnr示例检查学生输入。

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

也许这些问题应该使用新标签($ (document) .on ("click", "#register_in", function () all $().val()$(document).on("click", "#register_in", function() { var error = ""; if ($("username").val() == "" || $("password").val() == "" || $("name").val() == "" || $("lastname").val() == "" || $("jmbg").val() == "" || $("tel").val() == "" || $("email").val() == "") { error += "Sva polja moraju da budu popunjena"; } var n = $("jmbg").length; if (n != 13) { error += "\nJMBG mora da ima 13 cifara"; } $("#error1").text(error); }); $("#register").click(function() { var text = "<div class=\"Centar\"><div id= \"error1\" class=\"Red\" ></div >"; text += "Korisnicko ime: <br /> <input type=\"text\" id=\"username\" /> <br />"; text += "Lozinka: <br /> <input type=\"password\" id=\"password\" /> <br />"; text += "Ime:<br /> <input type=\"text\" id=\"name\" /> <br />"; text += "Prezime:<br /> <input type=\"text\" id=\"lastname\" /> <br />"; text += "Pol: <br /> <select id=\"pol\"><option value=\"M\">Musko</option><option value=\"Z\">Zensko</option></select><br />"; text += "JMBG:<br /> <input type=\"text\" id=\"jmbg\" /> <br />"; text += "Kontakt telefon:<br /> <input type=\"text\" id=\"tel\" /> <br />"; text += "Email:<br /> <input type=\"text\" id=\"email\" /> <br />"; text += "<input type=\"submit\" id=\"register_in\" value=\"Register\" /> </div >"; $("#screen").html(text); });),但我没有权限这样做。

1 个答案:

答案 0 :(得分:1)

经过多次实验后,以下程序对我有用:

  1. 我已经开始了一个新项目并加载了R Markdown模板 &#34;交互式教程&#34;并命名为&#34; 01-Exercises&#34;。 RStudio 生成了一个这个名字的文件夹,并把我的&#34; 01-Exercises.Rmd&#34;在这 夹。
  2. 我已将行tutorial_options(exercise.checker = checkr::check_for_learnr)添加到我的设置块中 &#34; 01-Exercises.Rmd&#34;文件。
  3. 我添加了一个标签为two-and-two-check的新R块。 (=与学生任务的块名称相同,但添加了-check。)
  4. 在这个R块中,我只添加了一行check_two_and_two(USER_CODE),这将成为我的测试功能。
  5. 我在一个额外的脚本文件中编写了一个测试函数check_two_and_two&#34; check_test.R&#34;并保存在文件夹&#34; www&#34;。
  6. 我已将此脚本的源代码发送到内存中。我从控制台运行rmarkdown::run("01-Exercises/01-Exercises.Rmd")
  7. 这是我的测试功能:

    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.")
    }
    

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