r - 如何防止 pander 删除尾随零?

标签 r r-markdown pandoc pander

当我同时告诉 pander 将值四舍五入到其各自有效数字以上时,如何防止 pander 删除尾随零?

在以下可重现的示例中,我试图对两个假设变量(男性和女性)的 p 值列进行舍入。

require(pander)

Gender <- c("Female", "Male")
p <- c(4.342e-06, 1.325e-05)
table <- data.frame(Gender, p)

panderOptions('round', 4)
panderOptions('keep.trailing.zeros', TRUE)

pandoc.table(table,
             round = panderOptions("round"),
             keep.trailing.zeros = panderOptions("keep.trailing.zeros"))

然而,我得到的是
------------
 Gender   p 
-------- ---
 Female   0 

  Male    0 
------------

但我想得到的是
----------------
 Gender      p 
-------- -------
 Female   0.0000 

  Male    0.0000
----------------

我怎样才能做到这一点?

**PS:我知道 this question ,但它不能解决我的问题。*

编辑:我也知道这个问题 here ,但那里的解决方案正是我想要避免在这里发生的事情,也就是说,当我试图四舍五入为不包含所有变量的任何有效数字的值时,删除尾随零。 NicE 有一个解决方案(rawr 在前面提到的问题中也给出了这个解决方案),但是除了堆叠额外的代码之外,它们还需要将值转换为字符,如果可能的话,我想避免这种情况。

最佳答案

pander (或更准确地说 pandoc.table)第一轮 round给定位数的数字,因此请参见例如以下基本示例:

> round(c(4.342e-06, 1.325e-05), 4)
[1] 0 0

现在你不能保留尾随零,因为没有。另一方面,如果其中一个数字高一点,我们不会四舍五入到零,例如:
> round(c(4.342e-06, 1.325e-05), 5)
[1] 0e+00 1e-05

我们可以保留一些尾随零 :) 基于此,请参阅以下两个示例:
> pander(matrix((c(4.342e-06, 1.325e-05))), round = 5)

-----
0e+00

1e-05
-----

> pander(matrix((c(4.342e-06, 1.325e-04))), round = 5)

-------
0.00000

0.00013
-------

总之,pander如果没有尾随零,则无法提供保留尾随零的方法-如果需要,则需要在具有更多数字的列中添加一个值(以便 pander 可以为其他数字填充尾随零)或进行一些预处理,例如@NicE 建议。

关于r - 如何防止 pander 删除尾随零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31606552/

相关文章:

r - 计算 R 中每个组的每个时间序列观测值的百分比

Rmarkdown 文档不能用 python block 编译

latex - 如何在 pandoc markdown 中设置代码块的字体大小?

R Markdown、Knitr、Pandoc 和 Bookdown 之间的关系

yaml - 从 Pandoc Markdown 文件中读取 YAML 元数据

r - R中data.frame和data.table之间的实际区别是什么

r - 从 sum() 和 '+' 获得不同的结果

r - 在 R 中使用 ggplot2 创建 "radar chart"(又名星形图;蜘蛛图)

html - 如何增加 bookdown 中侧边栏菜单的宽度

r - 有没有办法在 Rmarkdown 中执行条件 Markdown block ?