Message-ID: <cb3fe723-7f90-10fe-da10-e41002b84e11@yeah.net>
Date: 2022-09-06T02:45:38Z
From: Jinsong Zhao
Subject: expand a matrix
Hi there,
I have a matrix likes:
> m
[,1] [,2] [,3] [,4]
[1,] NA 1 2 3
[2,] 1 NA 6 5
[3,] 2 6 NA 4
[4,] 3 5 4 NA
I hope to expand it to 10 by 10 matrix, M, likes:
> M
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] NA NA NA NA 1 1 2 3 3 3
[2,] NA NA NA NA 1 1 2 3 3 3
[3,] NA NA NA NA 1 1 2 3 3 3
[4,] NA NA NA NA 1 1 2 3 3 3
[5,] 1 1 1 1 NA NA 6 5 5 5
[6,] 1 1 1 1 NA NA 6 5 5 5
[7,] 2 2 2 2 6 6 NA 4 4 4
[8,] 3 3 3 3 5 5 4 NA NA NA
[9,] 3 3 3 3 5 5 4 NA NA NA
[10,] 3 3 3 3 5 5 4 NA NA NA
I use the following code:
M <- matrix(NA, 10, 10)
for (i in 1:10) {
for (j in 1:10) {
if (i %in% 1:4 & j %in% 5:6) M[i,j] <- M[j,i] <- m[1,2]
if (i %in% 1:4 & j == 7) M[i,j] <- M[j,i] <-m[1,3]
if (i %in% 1:4 & j %in% 8:10) M[i,j] <- M[j,i] <-m[1,4]
if (i %in% 5:6 & j == 7) M[i,j] <- M[j,i] <-m[2,3]
if (i %in% 5:6 & j %in% 8:10) M[i,j] <- M[j,i] <-m[2,4]
if (i == 7 & j %in% 8:10) M[i,j] <- M[j,i] <-m[3,4]
}
}
Is there any convenience way to do it? Thanks!
Best,
Jinsong