我怎样才能防止 pander 丢弃尾随零?

How can I keep pander from dropping trailing zeros?

当我同时告诉 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,但它没有解决我的问题。*

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

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

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

现在您不能像 none 那样保留尾随零。另一方面,如果其中一个数字稍高,我们不会四舍五入为零,例如:

> 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
-------

简而言之,如果存在 none,pander 无法提供保留尾随零的方法——如果您需要,您要么需要在列中包含更多数字的值(以便 pander 可以为其他数字填充尾随零)或像@NicE 建议的那样进行一些预处理。