R中的which()错误

R中的which()错误,r,R,如您所见,第12个元素为-0.24 简单地创建一个数组的c。。。没有给出这个错误 我正在做的是不是有什么不正确的事情,或者这是哪个函数的问题,是否有任何替代方法,您将面临数值近似问题 尝试sseq==-0.24或sseq+0.24 在这里,您将注意到sseq中没有一个值精确地为-0.24。因此,问题与此无关,只与计算机无法准确表示所有数字这一事实有关。您面临着数值近似问题 尝试sseq==-0.24或sseq+0.24 在这里,您将注意到sseq中没有一个值精确地为-0.24。所以问题与此无关,

如您所见,第12个元素为-0.24

简单地创建一个数组的c。。。没有给出这个错误


我正在做的是不是有什么不正确的事情,或者这是哪个函数的问题,是否有任何替代方法,您将面临数值近似问题

尝试sseq==-0.24或sseq+0.24


在这里,您将注意到sseq中没有一个值精确地为-0.24。因此,问题与此无关,只与计算机无法准确表示所有数字这一事实有关。

您面临着数值近似问题

尝试sseq==-0.24或sseq+0.24


在这里,您将注意到sseq中没有一个值精确地为-0.24。所以问题与此无关,只是因为计算机不能准确地表示所有的数字。

这可能是由于浮点问题。您可以使用all.equal来检查此函数的阈值容差参数

 [1] -5.74 -5.24 -4.74 -4.24 -3.74 -3.24 -2.74 -2.24 -1.74 -1.24 -0.74 -0.24  0.26  0.76  1.26  1.76

这可能是由于浮点问题。您可以使用all.equal来检查此函数的阈值容差参数

 [1] -5.74 -5.24 -4.74 -4.24 -3.74 -3.24 -2.74 -2.24 -1.74 -1.24 -0.74 -0.24  0.26  0.76  1.26  1.76

与@Arun answer类似,您也可以

# tolerance is default - .Machine$double.eps ^ 0.5
chk <- apply(as.matrix(sseq), 1, function(x) {
    ifelse(all.equal(x, -0.24) == "TRUE", TRUE, FALSE)
})
which(chk)
# [1] 12

与@Arun answer类似,您也可以

# tolerance is default - .Machine$double.eps ^ 0.5
chk <- apply(as.matrix(sseq), 1, function(x) {
    ifelse(all.equal(x, -0.24) == "TRUE", TRUE, FALSE)
})
which(chk)
# [1] 12
啊哈。。聪明的我做了absseq+0.24,很快意识到它也会给出接近0.24的正值。我不得不改成人人平等+1.啊哈。。聪明的我做了absseq+0.24,很快意识到它也会给出接近0.24的正值。我不得不改成人人平等+1.