5

当我同时告诉它舍入高于其各自有效数字数量的值时,如何防止 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:我知道这个问题,但它不能解决我的问题。*

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

4

1 回答 1

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如果没有,则无法保留尾随零 - 如果需要,您需要在列中使用更多数字的值(以便pander可以为其他数字填充尾随零)或进行一些预处理,例如@NicE 建议。

于 2015-07-24T16:40:46.437 回答