我正在尝试使用.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
----------------------------------
答案 0 :(得分:1)
设置round
对数字位数没有任何直接影响(尽管由于可能呈现的数字无关紧要而导致一些间接影响(0
))。这里的主要问题是pander不允许您设置nsmall
的{{1}}参数设置
以非科学格式格式化实数/复数中小数点右边的最小位数。允许值为0 <= nsmall&lt; = 20。
但是,由于pander只将数值提供给format()
,您可以通过将值format()
提供给pander来解决这个问题:
as.character()
导致:
library (data.table)
library(magrittr)
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))
pander(
x = dt %>% mutate(value = value %>% round(2) %>% as.character()),
split.cell = 80,
split.table = Inf,
justify = "ccr"
)
答案 1 :(得分:0)
?panderOptions
页面显示&#39;数字&#39;被传递给format
,在那里它被解释为&#34;有效数字&#34;的数量。重要数字实际上与小数位几乎没有关系。您可以在小数值0.000041中包含2位有效数字。您可以在format()
- ed值中看到参数的效果:
> format(c( 10000.41, 9999.68, 10000.64 ), digits=2)
[1] "10000" "10000" "10001"
你确实希望保持&#34; round&#34;选项2。
答案 2 :(得分:0)
问题出在digits
部分。您必须将数字增加到小数点前后的最大位数。您最大的数字(有关数字)在小数点前(例如10000.41)有5位数字,在小数点后有2位数字。因此,您需要将数字设置为7,然后在2处舍入(舍入)。
```{r pander-table}
panderOptions('round',2)
panderOptions('digits',7)
panderOptions('keep.trailing.zeros',TRUE)
pander(dt, split.cell = 80, split.table = Inf)
```