gpt4 book ai didi

sweave - 如何将 r-exams 问题中的小数点分隔符更改为逗号?

转载 作者:行者123 更新时间:2023-12-03 23:44:08 28 4
gpt4 key购买 nike

我正在尝试在使用“r-exams/sweave”创建的问题中显示逗号作为小数分隔符。但是,我无法加载 siunitx 包或进行任何其他允许此更改的配置。我打算使用函数exams2moodle 将问题导出到moodle。

最佳答案

通过 LaTeX 包
siunitx 这样的 LaTeX 包或 icomma只能在通过 LaTeX 生成输出时使用(例如,exams2pdf 等)。但是,当 LaTeX 代码转换为 HTML 时(例如,在 exams2moodle 中),我不知道将带小数点的数字转换为小数点逗号的一般解决方案。
通过options(OutDec = ",")在 R 中
不过比较简单的是设置options(OutDec = ",")在 R 内。这项工作提供了:

  • 所有相关数字要么用逗号硬编码在文本中,要么用 r ... 动态生成或 \Sexpr{...} ,分别为
  • 可以保证 exsolutionnum练习仍然使用小数点。

  • 例如,考虑 schoice运动 deriv2 .它满足以上两项:1.所有数字都是从R动态插入的,2.它不是 num锻炼。
    library("exams")
    options(OutDec = ",")
    exams2html("deriv2.Rmd")
    deriv2
    这同样适用于练习的 Rnw 版本。
    如果练习应始终生成带逗号的数字,您还可以包括 options(OutDec = ",")在练习文件开头的第一个代码块中并恢复为 options(OutDec = ".")在最后的代码块中。
    使用 num运动 deriv也是可能的。但为了确保第 2 项,您要么需要写 fmt(res, decimal.mark = ".")而不仅仅是 fmt(res)exsolution或者恢复为 options(OutDec = ".")在添加元信息之前。
    通过 fmt(..., decimal.mark = "{,}")在 R 中
    上述方法的一个小缺点是关注细节的观众可能会注意到在 LaTeX 数学模式下 $...$逗号后插入一个小空格。有关示例,请参见上面的屏幕截图。
    如果你想避免这种情况,那么 {,}需要用作小数点分隔符。不幸的是, options(OutDec)不支持这一点,因为它需要是长度为 1 的字符串。另外, OutDec可能还不够,因为数学模式中的数字需要 {,}而纯文本中的数字只需要 , .
    在这种情况下,最简单的解决方案是离开 options(OutDec)在系统默认。而是使用 fmt(..., decimal.mark = "{,}")对于数学模式中的数字和 fmt(..., decimal.mark = ",")纯文本。为了减少打字,您还可以添加两个便利功能,例如:
    cfmt <- function(x, ...) fmt(x, ..., decimal.mark = ",")
    mfmt <- function(x, ...) fmt(x, ..., decimal.mark = "{,}")
    而不是在 exams::fmt() 上构建函数你也可以使用函数 base::format(..., decimal.mark = ...)如果您想自己处理任何舍入。
    要求
    请注意,传递 decimal.markfmt()至少需要 2.4-0 版的 R/exams。在撰写本文时,这是 R-Forge 提供的当前开发版本,但很快将发布到 CRAN。

    关于sweave - 如何将 r-exams 问题中的小数点分隔符更改为逗号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64027171/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com