Как использовать пакет checkr с learnr? - PullRequest
0 голосов
/ 10 июня 2018

Учебное пособие к пакету learnr относится к пакетам checkr:

Пакет checkr в настоящее время предоставляет функции проверки кода, которыесовместимы с learnr.

(Учтите, что эта ссылка не указывает на пакет CRAN checkr . К сожалению, существует дублированное имя пакета.)

Но в руководстве learnr нет советов, как использовать его вместе с checkr.С другой стороны, виньетка в checkr все еще является черновой версией, в ней обсуждаются сложные вопросы и отсутствует простой пример в отношении learnr.

. Я ищу конкретную процедурупример модели.Например: Как проверить ввод учащихся с помощью примера two-plus-two, предоставленного шаблоном learnr R Markdown «Интерактивные учебные пособия».

Итак, мой вопрос: Как проверить с помощью learnr код RТребуется добавить два плюс два, используя пакет checkr?


Возможно, в этих вопросах должны использоваться новые теги (learnr и checkr), но у меня нет прав для этого.

1 Ответ

0 голосов
/ 10 июня 2018

После многих экспериментов у меня сработала следующая процедура:

  1. Я запустил новый проект, загрузил шаблон R Markdown «Интерактивное учебное пособие» и назвал его «01-Упражнения».RStudio сгенерировал папку с этим именем и поместил мой «01-Exercises.Rmd» в эту папку.
  2. Я добавил строку tutorial_options(exercise.checker = checkr::check_for_learnr) в чанк установки моего файла "01-Exercises.Rmd".
  3. Я добавил новый чанк R с меткой two-and-two-check.(= То же имя, что и у чанка студенческого задания, но добавлено -check.)
  4. В этот чанк R я добавил только одну строку check_two_and_two(USER_CODE), которая станет моей тестовой функцией.
  5. Я написал тестовую функцию check_two_and_two в дополнительном файле сценария "check_test.R" и сохранил в папке "www".
  6. Я поставил этот скрипт для функции в память.Я запустил 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.")
}

Даже если это сработало для меня: Возможно, есть лучшее (более эффективное)решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...