R 序列上的哪个()命令不';找不到模式

R 序列上的哪个()命令不';找不到模式,r,R,可能重复: 在Gnu R中: which(seq(0, 1600, 0.05) == 0.3) returns integer(0) 但这是: which(round(seq(0, 1600, 0.05),2) == 0.3) returns [1] 7 seq()函数会发生什么情况?这本质上是R FAQ 7.31中关于浮点数之间比较的问题,导致了著名的“每个计算机科学家都应该知道的浮点数” 简而言之,使用idential()和其他帮助函数,以相对于小值进行比较\epsilon,因为浮点类

可能重复:

在Gnu R中:

which(seq(0, 1600, 0.05) == 0.3) returns
integer(0)
但这是:

which(round(seq(0, 1600, 0.05),2) == 0.3) returns
[1] 7

seq()
函数会发生什么情况?

这本质上是R FAQ 7.31中关于浮点数之间比较的问题,导致了著名的“每个计算机科学家都应该知道的浮点数”


简而言之,使用
idential()
和其他帮助函数,以相对于小值进行比较\epsilon,因为浮点类型不能完全相等。

这本质上是R FAQ 7.31中关于浮点之间比较的内容,这导致了著名的“每个计算机科学家都应该知道的浮点数”


简而言之,使用
idential()
和其他辅助函数相对于较小的值\epsilon进行比较,因为浮点类型无法实现完全相等。

您能否在此详细说明如何使用
idential
?e、 g.这也给出了
整数(0)
,这是我在火车上写的。请尝试以下大小:
which(sapply(seq(0,1,by=0.05),function(x)isTRUE(all.equal(x,0.30))
或使用
which(abs(seq(0,1600,0.05)-0.3)测试一个“接近”0.3的条目@StephanKolassa,这要快得多。这是任何编程语言中的常用方法。eps等于浮点精度的sqrt。你能在这里详细说明一下如何使用
idential
?例如,这也给出了
integer(0)
其中(sappy(seq(0,1600,0.05),idential,0.3))
这就是为什么我含糊其辞地说和其他助手函数:)我在火车上写的。请尝试以下大小:
which(sappy(seq(0,1,by=0.05),function(x)isTRUE(all.equal(x,0.30))
或者简单地用
which(abs(seq(0,1600,0.05)-0.3)@StephanKolassa测试一个“接近”0.3的条目,这要快得多。这是任何编程语言中的常用方法。eps等于浮点精度的sqrt。