私はUTM(Universal Transverse Mercator)座標系で場所とその地理的位置のリストを持つデータフレームを持っています。各点から所定の距離内にある点を見つけよう
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
。その後:
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
が私を修正しますが、あなたの距離関数は、2つの_points_、すなわち2 xと2つのY値を受け入れるべきではないのですか? –
はい。私は各行の間の距離を計算したいと思います。すべての行についてsqr((X_UTM [1] - X_UTM [i])^ 2 - (Y_UTM [1] - Y_UTM [i])^ 2)であり、[i]が1000未満であることを記録する。 –
あなたは 'dst < - as.matrix(dist(d [-1]))をしません。 diag(dst)< - NA; diag apply(dst、1、function(x)paste(which(x <1000)、collapse = "、")) ' – user20650