gpt4 book ai didi

R cut() 导致零的奇数处理

转载 作者:行者123 更新时间:2023-12-04 09:23:44 26 4
gpt4 key购买 nike

我正在使用 cut()以 0.05 的增量对从负值到正值的列表进行分类。但是,在 -0.05 到 0.05 范围内对零的处理会根据 cut 函数中使用的范围(参见下面的示例)而变化,因此我得到 [-0.05, 0), [0, 0.05) 或 [-0.05, 2.8e-17), [2.8e-17, 0.05)。我的偏好是将零显示为 0。

为了我的预期目的,我想要一个足够通用的范围,以便它可以处理我提供的任何列表中的范围。我用过 dig.lab , 使用显式断点代替 seq() ,但这没有帮助,或者至少对我在 Win7 64 位机器上设置 R v3.0.2 没有帮助。

我确定我遗漏了一些明显的东西,但我无法弄清楚。非常感谢任何帮助或指导。提前谢谢了 !

我遇到问题的例子是:

x<-c(-0.0262, 0.0426, 0.0212, 0.0166, 0.0225
, -0.0089, 0.0418, 0.0246, -0.0128, -0.0841)
y1<-cut(x, breaks=seq(from= -0.15, to=0.1, by=0.05), right=FALSE)
y1 # undesired handling of 0 by using a more generic range in seq
y2<-cut(x, breaks=seq(from= -0.1, to=0.1, by=0.05), right=FALSE)
y2 # desired handling of 0

对于 y1:
[1] [-0.05,2.78e-17) [2.78e-17,0.05)  [2.78e-17,0.05)  [2.78e-17,0.05)  [2.78e-17,0.05) 
[6] [-0.05,2.78e-17) [2.78e-17,0.05) [2.78e-17,0.05) [-0.05,2.78e-17) [-0.1,-0.05)
Levels: [-0.15,-0.1) [-0.1,-0.05) [-0.05,2.78e-17) [2.78e-17,0.05) [0.05,0.1)

对于 y2:
[1] [-0.05,0)    [0,0.05)     [0,0.05)     [0,0.05)     [0,0.05)     [-0.05,0)    [0,0.05)    
[8] [0,0.05) [-0.05,0) [-0.1,-0.05)
Levels: [-0.1,-0.05) [-0.05,0) [0,0.05) [0.05,0.1)

最佳答案

处理浮点数是计算机科学中一个臭名昭著的困惑问题。由于计算机以 2 为基数而不是 10 为基数存储数字,因此我们通常以 10 为基数使用的某些数字根本无法以 10 为基数简洁地表示。我建议尽可能多地使用整数进行工作。例如,这应该适用于 y1

y1<-cut(x, breaks=seq(from= -15, to=10, by=5)/100, right=FALSE)
levels(y1)
#[1] "[-0.15,-0.1)" "[-0.1,-0.05)" "[-0.05,0)" "[0,0.05)" "[0.05,0.1)"

关于R cut() 导致零的奇数处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23501763/

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