Я думаю, это может быть упрощение, которое вы ищете, где используются outer
и ifelse
.
Ниже приведен пример с фиктивными данными:
set.seed(1)
num_nodes <- 15
dahak <- sample(10,num_nodes,replace = TRUE)
Если вам нужна матрица для weigth_list
измерений num_nodes
, тогда вы можете попробовать
weight_list <- (u<-ifelse((z<-abs(outer(dahak,dahak,FUN = "-")))!=0,1-z/10,1))-diag(diag(u))
такой, что
> weight_list
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15]
[1,] 0.0 0.5 0.8 0.2 0.3 0.8 0.3 0.4 0.2 0.6 0.6 0.9 0.7 0.9 0.8
[2,] 0.5 0.0 0.7 0.7 0.8 0.7 0.8 0.9 0.7 0.9 0.9 0.4 0.8 0.4 0.7
[3,] 0.8 0.7 0.0 0.4 0.5 1.0 0.5 0.6 0.4 0.8 0.8 0.7 0.9 0.7 1.0
[4,] 0.2 0.7 0.4 0.0 0.9 0.4 0.9 0.8 1.0 0.6 0.6 0.1 0.5 0.1 0.4
[5,] 0.3 0.8 0.5 0.9 0.0 0.5 1.0 0.9 0.9 0.7 0.7 0.2 0.6 0.2 0.5
[6,] 0.8 0.7 1.0 0.4 0.5 0.0 0.5 0.6 0.4 0.8 0.8 0.7 0.9 0.7 1.0
[7,] 0.3 0.8 0.5 0.9 1.0 0.5 0.0 0.9 0.9 0.7 0.7 0.2 0.6 0.2 0.5
[8,] 0.4 0.9 0.6 0.8 0.9 0.6 0.9 0.0 0.8 0.8 0.8 0.3 0.7 0.3 0.6
[9,] 0.2 0.7 0.4 1.0 0.9 0.4 0.9 0.8 0.0 0.6 0.6 0.1 0.5 0.1 0.4
[10,] 0.6 0.9 0.8 0.6 0.7 0.8 0.7 0.8 0.6 0.0 1.0 0.5 0.9 0.5 0.8
[11,] 0.6 0.9 0.8 0.6 0.7 0.8 0.7 0.8 0.6 1.0 0.0 0.5 0.9 0.5 0.8
[12,] 0.9 0.4 0.7 0.1 0.2 0.7 0.2 0.3 0.1 0.5 0.5 0.0 0.6 1.0 0.7
[13,] 0.7 0.8 0.9 0.5 0.6 0.9 0.6 0.7 0.5 0.9 0.9 0.6 0.0 0.6 0.9
[14,] 0.9 0.4 0.7 0.1 0.2 0.7 0.2 0.3 0.1 0.5 0.5 1.0 0.6 0.0 0.7
[15,] 0.8 0.7 1.0 0.4 0.5 1.0 0.5 0.6 0.4 0.8 0.8 0.7 0.9 0.7 0.0