我遇到了与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
中获得与ojit_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/