【发布时间】:2016-08-15 03:14:42
【问题描述】:
我正在尝试在 .rmd 文件中使用 pander 将表格输出为 pdf,小数点后有 2 位数字,但使用以下 rmd 没有数字:
---
title: "Long table test"
output: pdf_document
---
Here is a table:
```{r setup}
library (data.table)
library (pander)
set.seed(1984)
longString <- "description string"
dt <- data.table(id=c(1:3),description=rep(longString,3),value=rnorm(3,mean=10000,sd=1))
```
```{r pander-table}
panderOptions('round',2)
panderOptions('digits',2)
panderOptions('keep.trailing.zeros',TRUE)
pander(dt, split.cell = 80, split.table = Inf)
```
结果
-------------------------------
id description value
---- ------------------ -------
1 description string 10000
2 description string 10000
3 description string 10001
-------------------------------
想看看
----------------------------------
id description value
---- ------------------ ----------
1 description string 10000.41
2 description string 9999.68
3 description string 10000.64
----------------------------------
【问题讨论】:
-
我的第一个更改是删除数字选项。如果它链接到 R 中的 signif 函数,它将产生您所看到的效果:
signif( mean(rnorm(1000,1000)), 2)返回[1] 1000。而signif( mean(rnorm(10,1000, 200)), 2)返回[1] 990 -
将
digits增加到 7。 -
将数字设置为 7 会给我
9999.677(即小数点后 3 位)或10000.64。如果我将数字设置为 7 并舍入为 2panderOptions('digits',7); panderOptions('round',2),那么我会得到想要的结果。似乎比一般解决方案更像是一种解决方法,因为它不能一致地应用于所有数据,我需要知道我的数据中有多少位数并进行适当调整。如果 pander 的行为方式与kable(x, digits=2)类似,这将导致小数点后两位数,那就太好了。 -
@DavidDickson
knitr::kable将digits传递给round——你也可以通过将round设置为round来实现2,我认为这很理智,而且提供了极大的灵活性。将大的digits和round设置为2有什么问题?
标签: r r-markdown pander