如何让pander不会丢弃尾随的零?

时间:2015-07-24 09:11:46

标签: r r-markdown pandoc 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这个问题,但是那里的解决方案正是我试图避免在这里发生的事情,也就是说,当我和#删掉尾随的零时# 39; m试图舍入到不包含所有变量的任何有效数字的值。 NicE有一个解决方案(rawr也在前面提到的上一个问题中给出了),但除了堆积额外的代码之外,他们还需要将值转换为字符,如果可能的话我希望避免使用。

1 个答案:

答案 0 :(得分:0)

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没有提供保留尾随零的方法 - 如果你需要,你需要在列中包含更多数字的值(以便{{1}可以填写其他数字的尾随零)或者做一些像@NicE建议的预处理。