它一直是编织者的一大特色,它可以进行智能舍入,因此你可以避免许多sprintf/round/paste0
弯路。
在一位客户抱怨我错误地给出小数后,我注意到忘记$$可能用科学记数法打印的数字是非常危险的。但同一位客户抱怨我使用科学记数法的格式看起来很难看,因为类似乳胶的数学与主要字体不匹配。
关于@yihui对已结束问题(https://github.com/yihui/knitr/issues/864)的评论,则需要$$。
有人有智能解决方案吗?目前,我回到使用sprintf格式化所有内容,就像过去一样。
---
output:
html_document:
theme: cosmo
---
I use the cosmo theme because it shows the typographic problem more clearly.
```{r}
options(digits=2)
mean = c(2.31310934, 1.23456e-7)
std = c(0.31310934, 6.54321e-7)
```
digits is `r getOption("digits")`
The mean is `r mean[1]` with a standard deviation of `r std[1]`.
This looks good
The mean is `r mean[2]` with a standard deviation of `r std[2]`.
Note that the aboves looks like "1.23510".
The mean is $`r mean[2]`$ with a standard deviation of $`r std[2]`$.
答案 0 :(得分:2)
您可以随时重新定义inline
输出挂钩以避免许多明确的sprintf/round/paste0
...
knitr::knit_hooks$set(inline = function(x) {
knitr:::format_sci(x, 'md')
})
这将使用1.23 × 10^-7^
形式的语法作为科学记数法,如果您的输出格式只是HTML,这将很有效。
对于特定类型的输出格式来说,这是一个简单的问题,但是当您希望数字格式可以跨所有格式(包括HTML,Word,LaTeX等)移植时很难。这就是knitr 1.7中$ $
成为必需的原因。