在 r 中用 learnr:tutorial 创建一个开放式问题
Create an open ended question with learnr:tutorial in r
我想让学生在他们参加的每个测验开始时输入他们的学生 ID。只要输入7位数字就没有正确答案。这就是我现在所拥有的,但是当定义的答案只有一个文本时,该函数不会 运行。我怎样才能接受一个问题的所有可能条目?
library(gtools)
library(learnr)
id <- permutations(10, 7, c(1,2,3,4,5,6,7,8,9,0))
question_text(
"Enter your student ID",
answer(id, correct = TRUE),
allow_retry = TRUE,
trim = TRUE
)
编辑
我最终使用了 classis 学习器 question_text
:
```{r student_id, echo=FALSE}
id_matrix <- permutations(10, 7, c(1,2,3,4,5,6,7,8,9,0))
id <- apply(id_matrix,1,function(x) paste0(x,collapse = ''))
do.call(question_text, c(
list("Enter your student ID:"),
lapply(id, answer, correct = TRUE),
list(
incorrect = "Your student ID is a 7 digit number on your Husky One Card",
allow_retry = TRUE,
trim = TRUE
)
))
```
我检查了 3 位数字,它有效。 新问题是 运行 文档需要很长时间(到目前为止已经 25 分钟了)。 有什么建议可以加快速度吗?
您可以使用shinyFeedback
和一个服务器块来输入学生的ID:
```{r, echo=FALSE}
library(shinyFeedback)
useShinyFeedback()
textInput("id", "Enter your ID")
verbatimTextOutput("value")
```
```{r, context="server"}
observeEvent(input$id, {
if (nchar(input$id) != 7 & !is.na(as.numeric(input$id))) {
showFeedbackWarning(
inputId = "id",
text = "Enter 7 digits"
)
} else {
hideFeedback("id")
}
})
我最终使用了 classis 学习器 question_text
:
```{r student_id, echo=FALSE}
id_matrix <- permutations(10, 7, c(1,2,3,4,5,6,7,8,9,0))
id <- apply(id_matrix,1,function(x) paste0(x,collapse = ''))
do.call(question_text, c(
list("Enter your student ID:"),
lapply(id, answer, correct = TRUE),
list(
incorrect = "Your student ID is a 7 digit number on your Husky One Card",
allow_retry = TRUE,
trim = TRUE
)
))
```
我想让学生在他们参加的每个测验开始时输入他们的学生 ID。只要输入7位数字就没有正确答案。这就是我现在所拥有的,但是当定义的答案只有一个文本时,该函数不会 运行。我怎样才能接受一个问题的所有可能条目?
library(gtools)
library(learnr)
id <- permutations(10, 7, c(1,2,3,4,5,6,7,8,9,0))
question_text(
"Enter your student ID",
answer(id, correct = TRUE),
allow_retry = TRUE,
trim = TRUE
)
编辑
我最终使用了 classis 学习器 question_text
:
```{r student_id, echo=FALSE}
id_matrix <- permutations(10, 7, c(1,2,3,4,5,6,7,8,9,0))
id <- apply(id_matrix,1,function(x) paste0(x,collapse = ''))
do.call(question_text, c(
list("Enter your student ID:"),
lapply(id, answer, correct = TRUE),
list(
incorrect = "Your student ID is a 7 digit number on your Husky One Card",
allow_retry = TRUE,
trim = TRUE
)
))
```
我检查了 3 位数字,它有效。 新问题是 运行 文档需要很长时间(到目前为止已经 25 分钟了)。 有什么建议可以加快速度吗?
您可以使用shinyFeedback
和一个服务器块来输入学生的ID:
```{r, echo=FALSE}
library(shinyFeedback)
useShinyFeedback()
textInput("id", "Enter your ID")
verbatimTextOutput("value")
```
```{r, context="server"}
observeEvent(input$id, {
if (nchar(input$id) != 7 & !is.na(as.numeric(input$id))) {
showFeedbackWarning(
inputId = "id",
text = "Enter 7 digits"
)
} else {
hideFeedback("id")
}
})
我最终使用了 classis 学习器 question_text
:
```{r student_id, echo=FALSE}
id_matrix <- permutations(10, 7, c(1,2,3,4,5,6,7,8,9,0))
id <- apply(id_matrix,1,function(x) paste0(x,collapse = ''))
do.call(question_text, c(
list("Enter your student ID:"),
lapply(id, answer, correct = TRUE),
list(
incorrect = "Your student ID is a 7 digit number on your Husky One Card",
allow_retry = TRUE,
trim = TRUE
)
))
```