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

grr*_*bla 15 r knitr

当显示带有超过四位数的内联代码的数字时

`r 21645`
Run Code Online (Sandbox Code Playgroud)

一个针织的html文件的结果是:( 2.164510^{4}实际上在内联钩子里面有一个计算结果,导致21645).即使我只是想要它打印数字,如下:21645.我可以很容易地解决这个问题,将一个实例包装在里面as.integer或者format或者print,但是如何为整个knitr文件设置一个选项,以便它打印整个整数(我需要的是打印5位数)?手动执行此操作非常烦人.设置options(digits = 7)没有帮助.我猜我必须设置一些chunk-optionor定义一个钩子,但我不知道怎么做

grr*_*bla 18

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

options(scipen=999)
Run Code Online (Sandbox Code Playgroud)

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

/sf/answers/1816327971/

来自以下文件?options:

scipen:整数.决定以固定或指数表示法打印数值时应用的惩罚.正值偏向固定和负向科学记数:固定符号将是首选,除非它超过更宽的数字.


Meg*_*ron 11

如果您不想在此实例中显示科学记数法,但又不想为knitr报告完全禁用它,则可以使用format()和设置scientific=FALSE:

`r format(21645, scientific=FALSE)`
Run Code Online (Sandbox Code Playgroud)


ags*_*udy 5

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

`r 21645L`
Run Code Online (Sandbox Code Playgroud)

当然,您始终可以设置一个内联挂钩以获得更大的灵活性(甚至最好像您的回答中那样设置全局选项):

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

```
Run Code Online (Sandbox Code Playgroud)