我有一个矩阵nn,它的值沿着对角线分布,我想通过乘以对角线矩阵b
的元素来创建一个新矩阵,对应于元素沿对角线的位置。
例如,假设我有一个44矩阵:
set.seed(5)
b <- diag(sample(4))
colnames(b) <- rownames(b) <- c("AAA" , "BBB" , "CCC" , "DDD")
给定矩阵b
:
AAA BBB CCC DDD
AAA 2 0 0 0
BBB 0 3 0 0
CCC 0 0 1 0
DDD 0 0 0 4
我想通过如下相乘来计算矩阵d
:
b[AAA , AAA] = 2 * 2 = 4
以及
b[AAA , BBB] = 2 * 3 = 6
最终结果应给予:
AAA BBB CCC DDD
AAA 4 6 2 8
BBB 6 9 3 12
CCC 2 3 1 4
DDD 8 12 4 16
有没有一个高效的代码可以做到这一点,而不必这样做的手?这将是不可能的,如果矩阵是非常大的。
1条答案
按热度按时间a2mppw5e1#
你所描述的是对角线的外积,你可以通过以下方式得到:
或