knitr显示整数的数字而没有科学记数法

时间:2015-06-17 10:15:36

标签: r knitr

显示带有超过四位数的内联代码的数字,如

`r 21645`

编织的html文件中的结果是这样的:2.164510^{4}(实际上在内联钩子中有一个计算结果,导致21645)。即使我只是想要打印数字,如下所示:21645。我可以轻松解决这个问题,将其包装在as.integerformatprint内,但如何为整个knitr文档设置一个选项,以便打印整个整数(我需要的是打印5位数字)?手动执行此操作非常烦人。设置options(digits = 7)没有帮助。我猜我必须设置一些chunk-optionor定义一个hook,但我不知道如何

3 个答案:

答案 0 :(得分:15)

我已经解决了它,只是在knitr文档开头的setoptions-chunk中包含以下代码行:

options(scipen=999)

解决了这个问题,就像@Paul Hiemstra的回答:

https://stackoverflow.com/a/25947542/4061993

来自?options的文档:

  

scipen :整数。决定打印时应用的惩罚   固定或指数表示法中的数值。正值偏差   对科学记数法的固定和否定:固定符号   将是首选,除非它比scipen数字更宽。

答案 1 :(得分:7)

如果您不想在此实例中显示科学记数法,但又不想完全禁用knitr报告,则可以使用format()并设置{{1} }:

scientific=FALSE

答案 2 :(得分:5)

请注意,如果您将数字键入为整数,则格式正确:

`r 21645L`

当然,您可以随时设置内联挂钩以获得更大的灵活性(即使最好像在答案中那样设置全局选项):

```{r}
inline_hook <- function(x) {
  if (is.numeric(x)) {
    format(x, digits = 2)
  } else x
}
knitr::knit_hooks$set(inline = inline_hook)

```