当我同时告诉 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/