gpt4 book ai didi

r - 如何防止 pander 删除尾随零?

转载 作者:行者123 更新时间:2023-12-03 17:43:02 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com