У меня есть матрица расстояний.Например:
d<-matrix(c(0,2,3,7,11,0,13,6,8,5,0,12,6,53,12,0), nrow = 4, ncol = 4)
d
[,1] [,2] [,3] [,4]
[1,] 0 11 8 6
[2,] 2 0 5 53
[3,] 3 13 0 12
[4,] 7 6 12 0
Я хочу создать соседнюю матрицу, в которой расстояние меньше или равно 5. В матрице nb 1 указывает, что соседа нет.Однако у них нет соседа (исключая себя, например, строка 1 и строка 4. Я бы хотел, чтобы соседом с наименьшим расстоянием был их сосед.
> nb=(d>=5)
> nb*1
[,1] [,2] [,3] [,4]
[1,] 0 1 1 1
[2,] 0 0 1 1
[3,] 0 1 0 1
[4,] 1 1 1 0
Ожидаемый результат
[,1] [,2] [,3] [,4]
[1,] 0 1 1 0
[2,] 0 0 1 1
[3,] 0 1 0 1
[4,] 1 0 1 0
Я пытался, и я не знаю, как получить его эффективно без использования цикла. Это всего лишь пример, мои фактические данные содержат более 9000 строк. Любое предложение будет полезным. Спасибо большое!