我已经阅读了帮助文件,format.pval
并想知道这是否是一个正确的工具,可以输出具有正确格式的数字,就有效数字而言
在这篇文章中:
R / Sweave 用科学记数法 \Sexpr{} 格式化数字
提出了一个解决方案,我想知道该功能format.pval
是否已经在这里执行此操作。
我想我们可以在 Sweave 中将它\Sexpr{format.pval(a value/variable here)}
与有效位数的选项一起使用。
非常感谢...
我已经阅读了帮助文件,format.pval
并想知道这是否是一个正确的工具,可以输出具有正确格式的数字,就有效数字而言
在这篇文章中:
R / Sweave 用科学记数法 \Sexpr{} 格式化数字
提出了一个解决方案,我想知道该功能format.pval
是否已经在这里执行此操作。
我想我们可以在 Sweave 中将它\Sexpr{format.pval(a value/variable here)}
与有效位数的选项一起使用。
非常感谢...
我已经在knitr
包中包含了这个功能,knitr
现在它变得非常聪明——$a \times 10^b$
如果你\Sexpr{}
生成一个数字并且它太大或太小,它会自动使用(如果你输出 HTML 而不是 TeX,它会自动使用a × 10<sup>b</sup>
)。您可能可以开始从 Sweave 切换到knitr
现在:http: //yihui.github.com/knitr/
format.pval
专门设计用于格式化打印的 p.values,例如在查看lm
.
主要用途format.pval
是format
更通用的。因此,您可能应该使用format
或其表亲 -prettyNum
而formatC
不是。
脚注:对于格式化日期(POSIXct 或 POSIXlt),您需要日期格式化功能strptime
我想format.pval
可能不应该使用。我们(统计学家)通常不会对 $p$ 值使用传统的科学记数法,因为前导 0 也是精度的反映。因此我们使用总位数。您会在大多数学术出版物中找到这一点。
例如,报告三位数字意味着“跟踪”值报告为“<0.001”,因为所提供的最高精度是千位。如果我指定digits=3
和eps=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
}
为保守起见,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
}