gpt4 book ai didi

r - 创建一个整数相似矩阵,使用 R

转载 作者:行者123 更新时间:2023-12-04 16:55:50 25 4
gpt4 key购买 nike

我有一个对角线等于 0 和非对角线都等于 1 的矩阵(单位矩阵的逆矩阵):

mat1 <- matrix(c(0,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0), 5, 5)

我还有一个向量,它的长度总是与矩阵的维度相同,并且总是从零开始:
vec1 <- c(0,1,2,3,4)

使用这两个对象,我想创建一个如下所示的矩阵:
mat2 <- matrix(c(0,1,2,3,4,1,0,1,2,3,2,1,0,1,2,3,2,1,0,1,4,3,2,1,0), 5, 5)

[,1] [,2] [,3] [,4] [,5]
[1,] 0 1 2 3 4
[2,] 1 0 1 2 3
[3,] 2 1 0 1 2
[4,] 3 2 1 0 1
[5,] 4 3 2 1 0

我想要一个可以泛化的操作,例如,如果我有一个 9 x 9 的矩阵和一个 0:8 的向量,我可以获得等效的结果。关于如何解决这个问题的任何想法?

最佳答案

由于 vec1 以零开头,因此您可以执行以下操作:

MakeMatrix <- function(x){
n <- length(x)
id <- abs(rep(1:n,n)-rep(1:n,each=n)) + 1
matrix(x[id],ncol=n)
}

MakeMatrix(vec1)

所以没有必要在输入中使用 mat1,因为那个实际上是多余的。您可以在函数内构造矩阵。

诀窍是提供一系列 id 值以从向量中选择,然后将所有内容转换为矩阵。

编辑:如果您只想使用序列,您也可以这样做:
MakeMatrix <- function(n){
id <- abs(rep(1:n,n)-rep(1:n,each=n))
matrix(id,ncol=n)
}

MakeMatrix(7)

关于r - 创建一个整数相似矩阵,使用 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5718399/

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