R笔记本:opts_chunk没有效果

Me *_*elf 6 r rstudio r-markdown rnotebook

我正在制作我的第一台R笔记本,除了一个问题外,它的效果非常好.我想成为我内联输出的数字

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

将逗号分隔为最多2位小数:123,456,789.12

为了实现这一点,我在文档的开头添加了一个块,其中包含...

```{r setup}
knitr::opts_chunk$set(echo = FALSE, warning=FALSE, cache = TRUE, message = FALSE)
knitr::opts_chunk$set(inline = function(x){if(!is.numeric(x)){x}else{prettyNum(round(x,1), big.mark = ",")}})
options(scipen=999)
```
Run Code Online (Sandbox Code Playgroud)

科学数字的压制就像一个魅力,所以大块肯定是执行.但是,数字的内联输出格式不起作用.

任何想法为什么会这样?这些设置通常不适用于R笔记本电脑吗?

编辑:

这里建议的解决方案也对数字的输出格式没有影响.

Len*_*ski 1

以下示例说明了在 R Markdown 文档中打印大量数字的两种方法。prettyNum()首先,编写在内联 R 块中使用该函数的代码。

Sample document where we test printing a large number. First set the number in an R chunk. 
```{r initializeData}
theNum <- 1234567891011.03
options(scipen=999,digits=16)
```

The R code we'll use to format the number is: `prettyNum(theNum,width=23,big.mark=",")`.

Next, print the large number. `r prettyNum(theNum,width=23,big.mark=",")`.
Run Code Online (Sandbox Code Playgroud)

使用块选项的替代方法的工作原理如下。

 Now, try an alternative using knitr chunks.

 ```{r prettyNumHook }
 knitr::knit_hooks$set(inline = function(x) { if(!is.numeric(x)){ x }else{ prettyNum(x, big.mark=",",width=23) } })
 ```
 Next, print the large number by simply referencing the number in an inline chunk as `theNum`: `r theNum`. 
Run Code Online (Sandbox Code Playgroud)

当两个代码块都嵌入到 Rmd 文件中并进行 knit 时,输出如下,表明两种技术产生相同的结果。

在此输入图像描述

问候,