2016-05-06 3 views
1

R: поиск строки в матрице с точками, близкими к двум выбранным точкам.R Найти ближайшие точки в матрице

У меня есть матрица с длинным/лат для области. И у меня есть точка в этой области с долготой и широтой, поэтому мне нужно найти точку в матрице, которая наилучшим образом соответствует.

Я попытался это, но он не работает:

find.point <- is.numeric(which(abs(matrix[,1]-East)==min(abs(matrix[,1]-East))) 
           && which(abs(matrix[,2]-North)==min(abs(matrix[,2]-North)))) 

Как найти точку, где Восток находится ближе к матрице [1], а также Северо ближе к матрице [2]?

+2

Добро пожаловать в переполнение стека. Отправьте воспроизводимый пример вместе с ожидаемым выходом. Посмотрите [по этой ссылке] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) для получения дополнительной информации. – Sotos

+0

Вам нужно определение «какая ближайшая точка» (эвклидовое расстояние или сумма отличительных различий для «Север» и «Восток» или другая метрика). Рассчитайте это расстояние для каждой точки, затем вы можете использовать 'which.min()' – jogo

ответ

3

Без конкретных данных от вас вам будет очень сложно помочь. Но если вы хотите, чтобы вычислить ближайшую точку с евклидовым расстоянием, и что ваши данные несколько похожи ниже, это может показать, как вы можете это сделать:

# Create some toy data 
set.seed(1) 
pos <- matrix(runif(20), 10, 2) 
colnames(pos) <- c("lon", "lat") 
print(pos) 
#    lon  lat 
# [1,] 0.26550866 0.2059746 
# [2,] 0.37212390 0.1765568 
# [3,] 0.57285336 0.6870228 
# [4,] 0.90820779 0.3841037 
# [5,] 0.20168193 0.7698414 
# [6,] 0.89838968 0.4976992 
# [7,] 0.94467527 0.7176185 
# [8,] 0.66079779 0.9919061 
# [9,] 0.62911404 0.3800352 
#[10,] 0.06178627 0.7774452 

new.pos <- c(0.5, 0.5) # New position 

# Compute distance to points and select nearest index 
nearest.idx <- which.min(colSums((t(pos) - new.pos)^2)) 
nearest.idx 
#[1] 9 

# Pick out the point 
pos[nearest.idx, ] 
#  lon  lat 
#0.6291140 0.3800352 

линией, которая вычисляет расстояние зависит от двух факторов: 1) матрицы в R хранятся в основном порядке столбца и 2) правила повторного использования/повтора R, когда вектор слишком короткий.

+0

Спасибо, что сработало! – Anne

 Смежные вопросы

  • Нет связанных вопросов^_^