我有一個數據框,其中包含UTM(通用橫軸墨卡託)座標中的地點列表和地理位置。查找哪些點位於每個點的給定距離內
它看起來是這樣的:
Place X_UTM Y_UTM
1 574262.0 6140492
2 571251.2 6141669
3 570841.9 6142535
4 570233.8 6141213
5 578269.2 6140304
6 575067.1 6137444
我想確定,每個地方(數據幀中的每一行)外,其他地方的這是一個給定的歐氏距離之內。在這種情況下,我想找出哪些地方比1公里更近。
我已經試過這樣的事情:
foo <- function(x, y) dist(c(x, y), method = "euclidian") < 1000
這應該是返回的1000多米的更近點的功能。然後:
x <- lapply(df(,c(i, x, y)), FUN = foo)
其中i
爲"Place"
,x
是"X_UTM"
和y
是"Y_UTM"
。這根本不起作用。
我應該後看起來像這樣(而不是從上面給出的數字)中獲得的輸出:
# Place Closest
# 1 2, 5
# 2 1
# 3 NA
# 4 5
# 5 1, 4
# 6 NA
糾正我,如果我是不正確的,但不應該將距離函數接受兩個_points_,即兩個X和兩個Y值? –
是的。我想計算每一行之間的距離。對於所有行,這應該是sqr((X_UTM [1] - X_UTM [i])^ 2 - (Y_UTM [1] - Y_UTM [i])^ 2),然後記錄哪個[i]小於1000. –
can你不會做'dst < - as.matrix(dist(d [-1])); diag(dst)< - NA; (dst,1,function(x)paste(其中(x <1000),collapse =「,」))' – user20650