1

我已经阅读了帮助文件,format.pval并想知道这是否是一个正确的工具,可以输出具有正确格式的数字,就有效数字而言

在这篇文章中:

R / Sweave 用科学记数法 \Sexpr{} 格式化数字

提出了一个解决方案,我想知道该功能format.pval是否已经在这里执行此操作。

我想我们可以在 Sweave 中将它\Sexpr{format.pval(a value/variable here)}与有效位数的选项一起使用。

非常感谢...

4

4 回答 4

3

我已经在knitr包中包含了这个功能,knitr现在它变得非常聪明——$a \times 10^b$如果你\Sexpr{}生成一个数字并且它太大或太小,它会自动使用(如果你输出 HTML 而不是 TeX,它会自动使用a &times; 10<sup>b</sup>)。您可能可以开始从 Sweave 切换到knitr现在:http: //yihui.github.com/knitr/

于 2011-12-09T18:29:39.600 回答
1

format.pval专门设计用于格式化打印的 p.values,例如在查看lm.

主要用途format.pvalformat更通用的。因此,您可能应该使用format或其表亲 -prettyNumformatC不是。

脚注:对于格式化日期(POSIXct 或 POSIXlt),您需要日期格式化功能strptime

于 2011-12-09T08:51:42.027 回答
1

我想format.pval可能不应该使用。我们(统计学家)通常不会对 $p$ 值使用传统的科学记数法,因为前导 0 也是精度的反映。因此我们使用总位数。您会在大多数学术出版物中找到这一点。

例如,报告三位数字意味着“跟踪”值报告为“<0.001”,因为所提供的最高精度是千位。如果我指定digits=3eps=0.001,0.0040523 的 p 值报告为 0.00405,这表明我的精度达到了 0.004 的十万位。

我使用以下小包装器:

format.p <- function(p, precision=0.001) {
  digits <- -log(precision, base=10)
  p <- formatC(p, format='f', digits=digits)
  p[p == formatC(0, format='f', digits=digits)] <- paste0('<', precision)
  p
}
于 2017-06-14T20:43:30.893 回答
0

为保守起见,p 值 0.32312 应四舍五入为 0.324,而不是 0.323。这是我的解决方案:

format.p = function(p, precision=0.001) {
  digits = -log(precision, base=10)
  p = formatC(ceiling(p/precision)*precision,format = 'f', digits=digits)
  p[p == formatC(0, format='f', digits=digits)] = paste0('<', precision)
  p
}
于 2019-01-11T16:24:10.340 回答