มีวิธีการหาระยะทางสำหรับเพื่อนบ้านที่ใกล้ที่สุดที่สองระหว่างรูปแบบจุดสองจุดใน R หรือไม่? แพ็คเกจ spatstat มีฟังก์ชั่นที่เรียกว่า nncross แต่มันใช้กับเพื่อนบ้านที่ใกล้ที่สุดระหว่างสองรูปแบบเท่านั้นและฉันต้องการระยะทางกับเพื่อนบ้านที่ใกล้ที่สุดที่สอง
มีวิธีการหาระยะทางสำหรับเพื่อนบ้านที่ใกล้ที่สุดที่สองระหว่างรูปแบบจุดสองจุดใน R หรือไม่? แพ็คเกจ spatstat มีฟังก์ชั่นที่เรียกว่า nncross แต่มันใช้กับเพื่อนบ้านที่ใกล้ที่สุดระหว่างสองรูปแบบเท่านั้นและฉันต้องการระยะทางกับเพื่อนบ้านที่ใกล้ที่สุดที่สอง
คำตอบ:
ฟังก์ชัน get.knnx ในแพ็คเกจ FNN สามารถคำนวณเพื่อนบ้านที่ใกล้ที่สุด N ในรูปแบบจุด
x1 = cbind(runif(10),runif(10))
x2 = cbind(runif(10),runif(10))
nn = get.knnx(x1,x2,2)
ตอนนี้ nn $ nn.index เป็นเมทริกซ์ที่ nn $ nn.index [i, j] คือแถวใน x1 ของสองประเทศเพื่อนบ้านที่ใกล้เคียงที่สุดกับแถว i ใน x2 - เรียงลำดับเพื่อให้ใกล้ที่สุดคือ [i, 1] และ เพื่อนบ้านต่อไปคือ [i, 2]
ฟังก์ชั่นนี้ยังส่งคืนระยะทางสำหรับคุณและมีตัวเลือกบางอย่างในการคำนวณดัชนีเชิงพื้นที่เพื่อการค้นหาที่รวดเร็วมาก
ฉันเพิ่งค้นพบว่าspatstatมีฟังก์ชั่นcrossdist
ลักษณะ
คำนวณระยะทางระหว่างคู่ของ 'สิ่งของ' ที่นำมาจากชุดข้อมูลสองชุดที่แตกต่างกัน
มันใช้รูปแบบจุดสองจุด X และ Y เป็นอินพุตและส่งกลับเมทริกซ์ซึ่งรายการ [i, j] คือระยะทางจาก X [i] ถึง Y [j] ในการรับเพื่อนบ้านที่สองที่ใกล้เคียงที่สุดโดยใช้ crossdist:
xdistances <- crossdist(X, Y) #Get all cross distances
nn = numeric()
for (i in 1:nrow(X)) {
xdistance <- sort(xdistances[i,], partial=2)[2]
nn <- append(nn, xdistance)
}
ฉันรู้ว่าฉันยอมรับคำตอบของ Spacedman แล้ว แต่ฉันต้องการแบ่งปันวิธีที่ฉันทำในอีกทางหนึ่ง
ฟังก์ชั่นnndist
ในspatstat
แพคเกจมีข้อโต้แย้งk
ที่กำหนดลำดับของประเทศเพื่อนบ้าน k=2
เพื่อให้ได้ใกล้เคียงที่สุดที่สองระยะเพื่อนบ้านใช้ k=1:2
ที่จะได้รับทั้งสองคนแรกและเพื่อนบ้านที่สองการใช้งาน