gpt4 book ai didi

在 R 数据框中保留数值精度?

转载 作者:行者123 更新时间:2023-12-04 10:11:25 30 4
gpt4 key购买 nike

当我从数字向量创建数据框时,R 似乎截断了低于我在分析中要求的精​​度的值:

data.frame(x=0.99999996)

返回 1(* 但请参阅更新 1)

我在拟合 spline(x,y) 时卡住了,由于在 y 变化时四舍五入,其中两个 x 值设置为 1。我可以解决这个问题,但如果可用,我更愿意使用标准解决方案。

示例

这是一个示例数据集
d <- data.frame(x = c(0.668732936336141, 0.95351462456867,
0.994620622127435, 0.999602102672081, 0.999987126195509, 0.999999955814133,
0.999999999999966), y = c(38.3026509783688, 11.5895099585560,
10.0443344234229, 9.86152339768516, 9.84461434575695, 9.81648333804257,
9.83306725758297))

以下解决方案有效,但我更喜欢不那么主观的东西:
plot(d$x, d$y, ylim=c(0,50))
lines(spline(d$x, d$y),col='grey') #bad fit
lines(spline(d[-c(4:6),]$x, d[-c(4:6),]$y),col='red') #reasonable fit

更新 1

*自从发布这个问题后,我意识到即使数据框仍然包含原始值,例如,这也会返回 1
> dput(data.frame(x=0.99999999996))

返回
structure(list(x = 0.99999999996), .Names = "x", row.names = c(NA, 
-1L), class = "data.frame")

更新 2

在使用 dput 发布此示例数据集以及来自 Dirk 的一些指针后,我可以看到问题不在于 x 值的截断,而是我用来计算 y 的模型中数值误差的限制。这证明删除一些等效数据点是合理的(如示例中的红线)。

最佳答案

如果您真的希望设置 R 以完全不合理的精度打印其结果,请使用:options(digits=16) .

请注意,这对使用 htese 结果的函数的准确性没有任何影响。它只是改变了值打印到控制台时的显示方式。除非您输入的有效数字多于横坐标可以处理的数字,否则在存储或访问它们时不会对这些值进行舍入。 'digits' 选项对浮点数的最大精度没有影响。

关于在 R 数据框中保留数值精度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4540649/

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