我正在加载可用于stanford存储库的R中的Gowalla数据集并重命名列名称。 https://snap.stanford.edu/data/loc-gowalla.html当在包含纬度的列中搜索时,R返回null
Gowalla<-read.csv(file = "Gowalla_edges.txt", sep="\t", header=FALSE)
colnames(Gowalla)<-c("uid", "utc", "lat", "long", "vid")
我的目标是选择含LODON全市范围内的经度和纬度的行。根据纬度和经度给出的边界框在 http://www.mapdevelopers.com/geocode_bounding_box.php
您可以访问和搜索伦敦的边界框,它给出了纬度和经度的范围。
现在,当我在R代表一个特定的纬度搜索例如
which(Gowalla$lat == 30.23591)
说,因为它是在数据中的第一个纬度,则返回null哪里!
但是如果我搜索VID是一个整数,而不是像纬度
which(Gowalla$vid==22847)
小数它给我的行号的那个值。
所以我的问题是为什么我不能使用“which”函数来搜索纬度和经度,为什么gowalla在我的情况下返回null?
一旦我找到答案,我可以使用if-else并搜索落在我伦敦边界框中的行。是否有任何有效的方法来搜索落在伦敦边界框中的行?
伦敦边框是 纬度51.672343和51.384940和经度 经度0.148271 -0.351468
谢谢之间。
不应使用'=='来搜索浮点值。您应该使用'这(ABS(Gowalla的$ LAT - 30.23591)<= 0.00000001)''那里是0.00000001'您所需的宽容 – digEmAll
这是不是一个好主意来比较浮点数与''==。改用'all.equal()'。欲了解更多信息,请参阅此[所有时间经典SO问题](http://stackoverflow.com/questions/9508518/why-are-these-numbers-not-equal)。 – RHertel
当'R'打印数字值时,它将它们四舍五入。所以'30.23591'不是实际的值,而是一个圆整的版本。如果你尝试'哪个(Gowalla $ lat == Gowalla $ lat [1])',你会收到一个不空的结果。要选择框内的数据,请尝试使用'lat <51.672343&lat> 51.384940&lon <0.148271&lon> -0.351468'(我省略了'Gowalla $'部分)。 – nicola