我正在加載可用於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