gpt4 book ai didi

r - 如何在给定 r 中的对角线和非对角线元素的情况下填充矩阵?

转载 作者:行者123 更新时间:2023-12-02 17:39:03 26 4
gpt4 key购买 nike

我有一个矩阵的元素如下:

diag= rep(1,5)
offdiag = c(rep(1:4), rep(1:3), rep(1:2), 1)

我想要的最终矩阵应该是一个对称矩阵,如下所示:

1 1 2 3 4
1 1 1 2 3
2 1 1 1 2
3 2 1 1 1
4 3 2 1 1

其中对角线由 diag 填充,下三角区域由 offdiag 按列填充。

在实践中,所有数字都是随机的。所以我需要一种通用的方法来用元素填充矩阵。

提前致谢!

最佳答案

试试这个:

m <- matrix(NA, ncol = length(diag), nrow = length(diag))
m[lower.tri(m)] <- offdiag
m[upper.tri(m)] <- t(m)[upper.tri(t(m))]
diag(m) <- diag
m
# [,1] [,2] [,3] [,4] [,5]
# [1,] 1 1 2 3 4
# [2,] 1 1 1 2 3
# [3,] 2 1 1 1 2
# [4,] 3 2 1 1 1
# [5,] 4 3 2 1 1

另一种选择:手动创建距离矩阵并从那里开始工作。

class(offdiag) <- "dist"
attr(offdiag, "Size") <- length(diag)
out <- as.matrix(offdiag)
diag(out) <- diag
out

关于r - 如何在给定 r 中的对角线和非对角线元素的情况下填充矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23040676/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com