【发布时间】:2019-01-17 13:59:04
【问题描述】:
我写了一系列学习者教程来帮助学生学习R,我需要记录学生何时提交了一个问题或一个练习的答案。 learnr 文档的一部分涉及该主题 (https://rstudio.github.io/learnr/publishing.html#recording_events),但显然没有达到我需要的详细程度。我有两个主要问题领域,在这些问题下方我粘贴了示例教程的代码。
-
设置
tutorial.event_recorder选项:learnr文档说明“您可以使用自定义事件记录器功能捕获事件。此功能通过
tutorial.event_recorder全局选项指定。”我在网上找到了一个例子,它在设置块中定义为
options(tutorial.event_recorder = learnr:::debug_event_recorder)这就是我在代码中添加的内容,但还有其他可能的选择吗?我是否正确使用它?
-
实际记录事件:
learnr文档创建了一个示例事件记录器函数,打印到标准输出为tutorial_event_recorder <- function(tutorial_id, tutorial_version, user_id, event, data) { cat(tutorial_id, " (", tutorial_version, "): ", user_id , "\n", sep = "") cat("event: ", event, "\n", sep = "") }
假设我对这种级别的事件记录感到满意:我假设我在某个 R 代码块中定义它,但我在哪里调用它?一旦我设置了tutorial.event_recorder 选项,tutorial_id、tutorial_version 和user_id 是由程序定义的全局参数吗?那么我是否将事件定义为exercise_submission,例如?是否有参数指定提交了哪个练习或问题?每个教程我通常有几个练习和问题。
如果有帮助,我已经粘贴了我的教程代码示例。最终我想合并checkr 包和它的事件记录,但我现在没有时间做好。这些教程托管在服务器上,但我首先尝试让事件记录在本地工作。非常感谢!
---
title: "Tutorial: Categorical Variables"
output: learnr::tutorial
runtime: shiny_prerendered
tutorial:
id: "toytorial"
---
```{r setup, include=FALSE}
library(learnr)
knitr::opts_chunk$set(echo = TRUE)
tutorial_options(exercise.eval = FALSE)
options(tutorial.event_recorder = learnr:::debug_event_recorder)
```
### Test yourself
Use the `dim()` command to get the number of columns and rows in the data frame 'iris'.
```{r, ex1, exercise=TRUE, echo = FALSE}
```
```{r, q1, echo=FALSE}
question("How many rows are in the 'iris' data frame?",
answer("5"),
answer("150", correct=TRUE)
)
```
编辑:在 Andrie 于 8 月 24 日的回答和 Andrie 在 github.com/rstudio/learnr/issues/182 上发布的有用示例教程之后,我已将示例教程中的设置块更新为:
```{r setup, include=FALSE}
library(learnr)
knitr::opts_chunk$set(echo = TRUE)
tutorial_options(exercise.eval = FALSE)
new_recorder <- function(tutorial_id, tutorial_version, user_id, event, data) {
cat(tutorial_id, " (", tutorial_version, "): ", user_id, ", ", event, ", ", data$label, ", ", data$answers, ", ", data$correct, "\n", sep = "")
}
options(tutorial.event_recorder = new_recorder)
```
现在我知道要查看 RStudio 中的 R Markdown 窗口,我会在回答问题或尝试练习时看到记录。我仍然不知道如何将事件记录写入文件或数据库:sink() 似乎不适合我。
【问题讨论】:
-
您知道如何将事件记录写入文件或数据库吗?
-
不幸的是,我没有,但自从我发布此消息以来,我一直无法深入研究它。我希望可能有一些更新的工具会有所帮助。提交者包,也许? link
标签: r