Joh*_*son 5 r pandoc r-markdown 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"))
Run Code Online (Sandbox Code Playgroud)
但是我得到的是
------------
Gender p
-------- ---
Female 0
Male 0
------------
Run Code Online (Sandbox Code Playgroud)
但是我想要得到的是
----------------
Gender p
-------- -------
Female 0.0000
Male 0.0000
----------------
Run Code Online (Sandbox Code Playgroud)
我该如何实现?
** PS:我知道这个问题,但是并不能解决我的问题。*
编辑:我也知道这里的问题,但那里的解决方案确实做了我想避免发生的事情,也就是说,当我尝试舍入到不包含任何值的值时,将尾随的零删除所有变量的有效数字。NicE有一个解决方案(rawr在前面的前面的问题中也提供了此解决方案),但是除了堆叠额外的代码外,它们还需要将值转换为字符,如果可能的话,我希望避免这种情况。
pander(或更准确地说pandoc.table)首先将round数字四舍五入到给定的位数,因此请参见以下基本示例:
> round(c(4.342e-06, 1.325e-05), 4)
[1] 0 0
Run Code Online (Sandbox Code Playgroud)
现在你不能保留尾随零,因为没有。另一方面,如果其中一个数字稍高,则我们不会四舍五入为零,例如:
> round(c(4.342e-06, 1.325e-05), 5)
[1] 0e+00 1e-05
Run Code Online (Sandbox Code Playgroud)
我们可以保留一些尾随零:)基于此,请参阅以下两个示例:
> 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
-------
Run Code Online (Sandbox Code Playgroud)
简而言之,pander如果没有,则无法保留尾随零 - 如果您需要这样做,您要么需要列中具有更多数字的值(以便可以pander填充其他数字的尾随零),要么进行一些预处理,例如@NicE 建议。