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。