我正在开发我的第一个R笔记本,除了一个问题外,它运行良好。
我想成为我内联输出的数字
`r realbignumber`
以逗号作为分隔符,最多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)
```
对科学数字的压抑就像是一种魅力,因此该块一定会被执行。但是,数字内联输出的格式不起作用。
任何想法为什么会这样?
这些设置通常不适用于R笔记本吗?
编辑:
建议的解决方案here对数字的输出格式也没有影响。
最佳答案
这是说明在R Markdown文档中打印大量数字的两种方法的示例。首先,在内联R块中使用prettyNum()
函数的代码。
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=",")`.
使用块选项的替代方法如下。
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`.
当将两个代码块都嵌入到Rmd文件中并进行编织时,输出如下所示,表明这两种技术均产生相同的结果。
问候,
伦
关于r - R笔记本: opts_chunk has no effect,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41186677/