有没有办法将电子表格中的问题和答案导入到学习者测验中?
Is there a way to import questions and answers from a spreadsheet into a learnr quiz?
我是 R 的新手,所以提前感谢您的耐心等待。
我想使用 learnr 包在 R 中创建多项选择测验(测验内容与 r 代码无关)。我在电子表格中有所有问题、回答选项和正确答案。由于我的物品库有100多件物品,我举一个简单的例子
Stem<-c("stem1", "stem2", "stem3")
OptionA <- c("a1", "a2", "a3")
OptionB<- c("b1", "b2", "b3")
OptionC<- c("c1", "c2", "c3")
Correct<- c("c1", "b2", "a3")
items<-cbind(Stem, OptionA, OptionB, OptionC, Correct)
目前,我知道如何从电子表格中提取数据的唯一方法是这样的:
learnr::question(items$Stem[1],
answer(items$OptionA[1]),
answer(items$OptionB[1]),
answer(items$OptonC[1], correct = TRUE),
answer(items$OptionD[1])
)
然而,这仍然需要我为每个项目编写该块代码并手动分配正确答案。有谁知道使用 learner 或其他软件包更简单的方法吗?
您可以简单地遍历数据或电子表格的行,并使用一个函数来设置问题并将它们保存在列表中。我的方法使用 purrr::map
但你一个简单的 for 循环我们也可以做到这一点。试试这个:
---
title: "Tutorial"
output: learnr::tutorial
runtime: shiny_prerendered
---
```{r setup, include=FALSE}
library(learnr)
library(dplyr)
library(purrr)
knitr::opts_chunk$set(echo = FALSE)
```
```{r}
Stem<-c("stem1", "stem2", "stem3")
OptionA <- c("a1", "a2", "a3")
OptionB<- c("b1", "b2", "b3")
OptionC<- c("c1", "c2", "c3")
Correct<- c("c1", "b2", "a3")
items<-data.frame(Stem, OptionA, OptionB, OptionC, Correct)
```
## Topic 1
### Quiz
```{r quiz}
make_q <- function(x) {
question(x$Stem,
answer(x$OptionA, correct = x$Correct == x$OptionA),
answer(x$OptionB, correct = x$Correct == x$OptionB),
answer(x$OptionC, correct = x$Correct == x$OptionC))
}
questions <- items %>%
split(.$Stem) %>%
purrr::map(make_q)
```
```{r}
quiz(
questions[[1]],
questions[[2]],
questions[[3]])
```
我是 R 的新手,所以提前感谢您的耐心等待。
我想使用 learnr 包在 R 中创建多项选择测验(测验内容与 r 代码无关)。我在电子表格中有所有问题、回答选项和正确答案。由于我的物品库有100多件物品,我举一个简单的例子
Stem<-c("stem1", "stem2", "stem3")
OptionA <- c("a1", "a2", "a3")
OptionB<- c("b1", "b2", "b3")
OptionC<- c("c1", "c2", "c3")
Correct<- c("c1", "b2", "a3")
items<-cbind(Stem, OptionA, OptionB, OptionC, Correct)
目前,我知道如何从电子表格中提取数据的唯一方法是这样的:
learnr::question(items$Stem[1],
answer(items$OptionA[1]),
answer(items$OptionB[1]),
answer(items$OptonC[1], correct = TRUE),
answer(items$OptionD[1])
)
然而,这仍然需要我为每个项目编写该块代码并手动分配正确答案。有谁知道使用 learner 或其他软件包更简单的方法吗?
您可以简单地遍历数据或电子表格的行,并使用一个函数来设置问题并将它们保存在列表中。我的方法使用 purrr::map
但你一个简单的 for 循环我们也可以做到这一点。试试这个:
---
title: "Tutorial"
output: learnr::tutorial
runtime: shiny_prerendered
---
```{r setup, include=FALSE}
library(learnr)
library(dplyr)
library(purrr)
knitr::opts_chunk$set(echo = FALSE)
```
```{r}
Stem<-c("stem1", "stem2", "stem3")
OptionA <- c("a1", "a2", "a3")
OptionB<- c("b1", "b2", "b3")
OptionC<- c("c1", "c2", "c3")
Correct<- c("c1", "b2", "a3")
items<-data.frame(Stem, OptionA, OptionB, OptionC, Correct)
```
## Topic 1
### Quiz
```{r quiz}
make_q <- function(x) {
question(x$Stem,
answer(x$OptionA, correct = x$Correct == x$OptionA),
answer(x$OptionB, correct = x$Correct == x$OptionB),
answer(x$OptionC, correct = x$Correct == x$OptionC))
}
questions <- items %>%
split(.$Stem) %>%
purrr::map(make_q)
```
```{r}
quiz(
questions[[1]],
questions[[2]],
questions[[3]])
```