Как добавить матрицу по диагонали («сложить пополам») в R?

Это то, что вы можете сделать:

SELECT * 
FROM yourTable
PIVOT (MAX(xCount) 
       FOR Week in ([1],[2],[3],[4],[5],[6],[7])) AS pvt

DEMO

0
задан camille 16 January 2019 в 20:06
поделиться

1 ответ

m <- matrix(1:9, nrow = 3)
m
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
n <- m + t(m) # add transpose to original
n
     [,1] [,2] [,3]
[1,]    2    6   10
[2,]    6   10   14
[3,]   10   14   18
n * upper.tri(n) # clear out the lower diagonal
     [,1] [,2] [,3]
[1,]    0    6   10
[2,]    0    0   14
[3,]    0    0    0

Так что вы можете сделать функцию

my_func <- function(m) {
  # do some assertions: m is matrix, square and numeric etc
  (m + t(m)) * upper.tri(m)
}
0
ответ дан Russ Hyde 16 January 2019 в 20:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: