R语言 具有大容许投掷误差的数值问题

yb3bgrhw  于 2023-03-20  发布在  其他
关注(0)|答案(1)|浏览(163)

背景

R/exams是为学生生成考试的一个很棒的工具。

问题

当数值练习具有较大的容差(extol)时,将抛出错误:

Error in if (!is.null(extol) && any(extol < 0)) { : 
  missing value where TRUE/FALSE needed

这是一个错误还是我错过了什么?

最小的例子

下面是一个引发错误的最小练习:

Question
========
Some text

Solution
========
Some solution

```{r}
sol <- 1e4
sol_tol <- 1e4

Meta-information

exname: test-debug
extype: num
exsolution: r fmt(sol, 3)
extol: r sol_tol


我使用exams 2 html来呈现练习:

exams2html(file = "test-debug.Rmd",
edir = "exercises",
dir = "/.")


## 系统信息

检查2.4-0
vc9ivgsu

vc9ivgsu1#

您需要确保exsolutionextol实际上都只包含数字。但是,根据scipen选项,较大的数字可能会转换为包含科学记数法的字符串。
在您的示例中,您通过在exsolution中使用fmt()函数来避免使用科学记数法,但由于您没有在extol中使用fmt(),因此它将呈现为字符串而不仅仅是数字。
该问题和相应的解决方案在以下文件中有更详细的说明:.Rmd练习文件中的round()函数出现问题
简而言之,要么确保scipen足够高,要么使用fmt()这样的格式化程序,确保只将其输入显示为普通数字。

相关问题