我遇到了与R which () function returns integer(0)中描述的问题相同的问题

price = seq(4,7, by=0.0025)
allPrices = as.data.frame(price)
lookupPrice = 5.0600
which(allPrices$price == lookupPrice)
which()语句输出integer(0),指示不匹配。它应该输出425,即该序列中匹配的行号。

我了解这是一个浮点问题。该链接建议以某种方式使用all.equal(x,y)

如何将all.equal()函数合并到which()语句中,以便在allPrices中获得与oj​​it_code匹配的行号(在本例中为5.06)?

还有其他方法吗?我需要行号,因为其他列中的价格将被修改。

最佳答案

手动方法涉及指定比较的公差并执行以下操作:

# tol = 1e-7: comparison will be TRUE if numbers are equal up to
#   7 decimal places
tol = 1e-7
which(abs(allPrices$price - lookupPrice) < tol)

关于R如何将which()与浮点值一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45206286/

10-13 06:28