在knitr上设置全局千位分隔符

Wal*_*cio 13 format formatting r knitr

我希望我的knitr报告中的所有数字都默认格式化为:

format(num, digits = 2, big.mark = " ", decimal.mark = ",")
Run Code Online (Sandbox Code Playgroud)

将数字的数量默认为2,将小数点标记为逗号很简单,我只需要options(digits = 2, OutDec = ",")在我的第一个R块中设置.但是,我不知道如何" "以该格式设置千位分隔符(或其他任何内容).我也试过调整opts_chunk,但无法让它工作.

当然,我试图避免必须插入format()每个输出,内联或其他内容.毕竟,更聪明的格式化是让我从Sweave开始编织的一件事.

如何在knitr上设置默认的千位分隔符?

Wal*_*cio 22

正如弗兰克指出的那样,设置如下的编织钩子解决了这个问题:

knit_hooks$set(inline = function(x) {
  prettyNum(x, big.mark=" ")
})
Run Code Online (Sandbox Code Playgroud)

事实证明,knitr hook是调整knitr上R块输出的好方法.看看http://yihui.name/knitr/hooks是非常值得的.

资料来源:https://groups.google.com/forum/#! msg/ knitr/ CnFwvk1Qn1E/ WY-Xhf7Ph3AJ

  • 值得注意的是,此函数希望所有内联代码的输出都是数字,这在Rmarkdown文档中可能不是这种情况.非数字内联输出将导致文档无法编译.通过稍微调整函数可以解决这个问题:`knitr :: knit_hooks $ set(inline = function(x){if(!is.numeric(x)){x} else {prettyNum(round(x,2), big.mark =",")}})` (5认同)
  • 有一个如何在输出中嵌入编织钩的工作示例吗? (2认同)