格式错误的数字位数。pval()?

问题描述 投票:1回答:2

[在format.pval()中指定3位数字时,为什么0.019950为什么输出4位数字:

format.pval(0.019950, eps=.001, digits=3, nsmall=3)
"0.0199"

但是,例如,0.019951输出3位数字:

format.pval(0.019951, eps=.001, digits=3, nsmall=3)
"0.020"

编辑(解决方案):

基于dcarlson's答案,保留3位数字同时保留p-值格式的解决方案,只是将值四舍五入到3位数字,然后再传递给format.pval()

format.pval(round(0.019950, digits=3), eps=.001, digits=3, nsmall=3)
"0.020"
r digits p-value
2个回答
1
投票

digits=参数在R中的此处和其他地方是有效数字,而不是十进制数字。有效数字会忽略小数点前的0,因此第一个响应是3个有效数字,因为您无需在小数点后计算0。在第二个示例中,答案四舍五入为.02,但是nsmall = 3强制附加尾随0。

此外,在R中指定digits=自变量通常被视为建议性变量,因此可能无法遵循。您始终可以使用round或格式化功能sprintf强制R打印小数位数。

format.pval(round(0.019950, 3), digits=3, nsmall=3)
# [1] "0.020"
sprintf("%.3f", .019950)
# [1] "0.020"

2
投票

要解决您的第一个问题“为什么说0.019950输出4位数字”

© www.soinside.com 2019 - 2024. All rights reserved.