如何修复 R/exams 错误 "could not find function answerlist"

How to fix the R/exams error "could not find function answerlist"

我以 R/Markdown 格式创建了一个 R/exams 问题。当我尝试编译然后将其带到 exams2moodle 和/或 exams2pdf 时,我收到以下错误消息:

Error in answerlist (questions, markup = "markdown"): could not find function answerlist.

练习是:

```{r, data generation, echo = FALSE, results = "hide"}
#1a.GENERACION DE DATOS. ASIGNACION/DEFINICION DE VARIABLES. CUELLO
a1<-sample(seq(from = 100, to = 250, by = 2), 10)
casilla1<-min(a1)
casilla2<-max(a1)
increm<-casilla2-casilla1
a2<-sample(seq(from = casilla2, to = casilla2+increm, by = 2))
casilla3<-min(a2)
casilla4<-max(a2)
a3<-sample(seq(from = casilla4, to = casilla4+increm, by = 2))
casilla5<-min(a3)
casilla6<-max(a3)

#1b.GENERACION DE DATOS. ASIGNACION/DEFINICION DE VARIABLES. CUERPO
crpizq<-casilla6*1.5
c1<-sample(seq(from = crpizq, to = crpizq+increm, by = 2))
casilla7<-min(c1)
casilla8<-max(c1)
c2<-sample(seq(from = casilla8, to = casilla8+increm, by = 2))  
casilla9<-min(c2)
casilla10<-max(c2)
c3<-sample(seq(from = casilla10, to = casilla10+increm, by = 2))
casilla11<-min(c3)
casilla12<-max(c3)

#1c.GENERACION DE DATOS. ASIGNACION/DEFINICION DE VARIABLES. PRECIO
precio1<-sample(seq(from=20000, to=40000, by=500), 1)
precio2<-precio1+15000
precio3<-precio2+15000
preciopregunta<-sample(c(precio1,precio2,precio3), 1)

#2a.GENERACION DE PREGUNTA(S)/RESPUESTA(S). ASIGNACION/DEFINICION DE VARIABLES
cuellop1<-sample(seq(from = casilla1,to = casilla2-1, by = 2), 1)
cuerpop1<-sample(seq(from = casilla7,to = casilla8-1, by = 2), 1)
cuellop2<-sample(seq(from = casilla3,to = casilla4-1, by = 2), 1)
cuerpop2<-sample(seq(from = casilla9,to = casilla10-1, by = 2), 1)
cuellop3<-sample(seq(from = casilla5,to = casilla6-1, by = 2), 1)
cuerpop3<-sample(seq(from = casilla11,to = casilla12-1, by = 2), 1)

questions<-solutions<-explanations<-NULL
if(preciopregunta==precio1) {
   questions[1]<-paste("Vasija de " ,cuellop1, " mm en contorno de cuello y ", 
                    cuerpop1, " mm en contorno de cuerpo.")
   solutions[1]<-TRUE
   explanations[1]<-"."
   questions[2]<-paste("Vasija de " ,cuellop1, " mm en contorno de cuello y ", 
                    cuerpop2, " mm en contorno de cuerpo.")
   solutions[2]<-FALSE
   explanations[2]<-"."
   questions[3]<-paste("Vasija de " ,cuellop2, " mm en contorno de cuello y ", 
                    cuerpop3, " mm en contorno de cuerpo.")
   solutions[3]<-FALSE
   explanations[3]<-"."
   questions[4]<-paste("Vasija de " ,casilla1, " mm en contorno de cuello y ", 
                    casilla8, " mm en contorno de cuerpo.")
   solutions[4]<-FALSE
   explanations[4]<-"."
   orden<-sample(1:4)
   questions<-questions[orden]
   solutions<-solutions[orden]
   explanations<-explanations[orden]
   } else if (preciopregunta==precio2) {
   questions[1]<-paste("Vasija de " ,cuellop2, " mm en contorno de cuello y ", 
                    cuerpop2, " mm en contorno de cuerpo.")
   solutions[1]<-TRUE
   explanations[1]<-"."
   questions[2]<-paste("Vasija de " ,cuellop1, " mm en contorno de cuello y ", 
                    cuerpop2, " mm en contorno de cuerpo.")
   solutions[2]<-FALSE
   explanations[2]<-"."
   questions[3]<-paste("Vasija de " ,cuellop2, " mm en contorno de cuello y ", 
                    cuerpop3, " mm en contorno de cuerpo.")
   solutions[3]<-FALSE
   explanations[3]<-"."
   questions[4]<-paste("Vasija de " ,casilla3, " mm en contorno de cuello y ", 
                    casilla10, " mm en contorno de cuerpo.")
   solutions[4]<-FALSE
   explanations[4]<-"."
   orden<-sample(1:4)
   questions<-questions[orden]
   solutions<-solutions[orden]
   explanations<-explanations[orden]
   } else {
   questions[1]<-paste("Vasija de " ,cuellop3, " mm en contorno de cuello y ", 
                    cuerpop3, " mm en contorno de cuerpo.")
   solutions[1]<-TRUE
   explanations[1]<-"."
   questions[2]<-paste("Vasija de " ,cuellop1, " mm en contorno de cuello y ", 
                    cuerpop2, " mm en contorno de cuerpo.")
   solutions[2]<-FALSE
   explanations[2]<-"."
   questions[3]<-paste("Vasija de " ,cuellop2, " mm en contorno de cuello y ", 
                    cuerpop3, " mm en contorno de cuerpo.")
   solutions[3]<-FALSE
   explanations[3]<-"."
   questions[4]<-paste("Vasija de " ,casilla5, " mm en contorno de cuello y ", 
                    casilla12, " mm en contorno de cuerpo.")
   solutions[4]<-FALSE
   explanations[4]<-"."
   orden<-sample(1:4)
   questions<-questions[orden]
   solutions<-solutions[orden]
   explanations<-explanations[orden] }
```
The table shows the relationship between prices and measurements that an artisan handles in the sale of vessels:

|       Contorno del cuello (mm)        |        Contorno del cuerpo (mm)         |       Precio        |
|:-------------------------------------:|:---------------------------------------:|:-------------------:|
| [**`r casilla1`** , **`r casilla2`**) |  [**`r casilla7`** , **`r casilla8`**)  | $$$**`r precio1`** |
| [**`r casilla3`** , **`r casilla4`**) | [**`r casilla9`** , **`r casilla10`**)  | $$$**`r precio2`** |
| [**`r casilla5`** , **`r casilla6`**) | [**`r casilla11`** , **`r casilla12`**) | $$$**`r precio3`** |

Question
========

Which of the following pots has a price of $$$**`r preciopregunta`**?

```{r, questionlist, echo = FALSE, results = "asis"}
answerlist(questions, markup = "markdown")
```

Solution
========
```{r, solutionlist, echo = FALSE, results = "asis"}
answerlist(ifelse(solutions,"True","False"),explanations, markup = "markdown")
```

Meta-information
================
extype: schoice 
exsolution:`r mchoice2string(solutions)` 
exname: Vas

我无法使用您提供的练习来重现此问题,对我而言代码有效。不过,您应该将带有 table 的文本移动到 Question 部分。

可能导致问题的原因是您没有通过 library("exams") 完全加载和附加 R 包 exams 并且只使用了完全限定的 exams::exams2pdf(...) 而没有附加包.如果是这样,那么您还需要完全限定的 exams::answerlist(...)exams::mchoice2string(...) 等才能使用包中的函数。 (就个人而言,我在编译任何练习之前使用 library("exams") 加载并附加包。)