Если m
- это матрица, подобная той, что показана в примечании в конце с заполненным нижним треугольником, то она также заполняет верхнюю часть tri angular.
m2 <- m + t(m)
m2
## [,1] [,2] [,3] [,4]
## [1,] 0 5 9 13
## [2,] 5 0 10 14
## [3,] 9 10 0 15
## [4,] 13 14 15 0
Если диагональ m
не равна 0, сделайте это следующим образом:
m + t(m) - diag(diag(m))
Примечание
m <- matrix(c(0, 5, 9, 13, 0, 0, 10, 14, 0, 0, 0, 15, 0, 0, 0, 0), 4)
m
## [,1] [,2] [,3] [,4]
## [1,] 0 0 0 0
## [2,] 5 0 0 0
## [3,] 9 10 0 0
## [4,] 13 14 15 0
Если мы начинаем с фрейм данных DF
, затем сначала используйте as.matrix
для его преобразования.
DF <- structure(list(V1 = c(0, 5, 9, 13), V2 = c(0, 0, 10, 14), V3 = c(0,
0, 0, 15), V4 = c(0, 0, 0, 0)), class = "data.frame", row.names = c(NA,
-4L))
m <- as.matrix(DF)