जवाबों:
पैकेज getN में फ़ंक्शन get.knnx बिंदु पैटर्न में एन-निकटतम पड़ोसियों की गणना कर सकता है।
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 को पंक्ति में x2 में पंक्तिबद्ध करने के लिए है - सॉर्ट किया गया ताकि निकटतम [i, 1] और अगला पड़ोसी [i, 2] है।
यह फ़ंक्शन आपके लिए दूरियां भी लौटाता है, और बहुत तेज़ खोजों के लिए स्थानिक अनुक्रमितों की गणना करने के लिए कुछ विकल्प हैं।
मुझे अभी पता चला है कि स्पैस्टेट में एक क्रॉसडिस्ट फ़ंक्शन है।
विवरण
दो अलग-अलग डेटासेटों से ली गई 'चीजों' के जोड़े के बीच की दूरी की गणना करता है।
यह इनपुट के रूप में दो बिंदु पैटर्न X और Y लेता है, और मैट्रिक्स को लौटाता है जिसकी [i, j] प्रविष्टि X [i] से Y [j] तक की दूरी है। क्रॉसडिस्ट का उपयोग करके दूसरे निकटतम पड़ोसियों को प्राप्त करने के लिए:
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)
}
मुझे पता है कि मैंने पहले ही स्पाइडरमैन के जवाब को स्वीकार कर लिया है लेकिन मैं इसे साझा करना चाहूंगा कि मैंने इसे दूसरे तरीके से कैसे किया।
पैकेज के कार्य nndist
में spatstat
एक तर्क है k
जो पड़ोसियों के आदेश को निर्धारित करता है। दूसरा निकटतम पड़ोसी दूरी पाने के लिए, का उपयोग करें k=2
। पहले और दूसरे दोनों पड़ोसी पाने के लिए, का उपयोग करें k=1:2
।