使用R创建整数的相似性矩阵
发布时间:2020-12-14 04:34:35 所属栏目:大数据 来源:网络整理
导读:我有一个对角线等于零的矩阵和非对角线都等于1(单位矩阵的倒数): mat1 - matrix(c(0,1,0),5,5) 我还有一个向量,它始终与矩阵的dims长度相同,并始终从零开始: vec1 - c(0,2,3,4) 使用这两个对象我想创建一个如下所示的矩阵: mat2 - matrix(c(0,4,5) [,1] [
我有一个对角线等于零的矩阵和非对角线都等于1(单位矩阵的倒数):
mat1 <- matrix(c(0,1,0),5,5) 我还有一个向量,它始终与矩阵的dims长度相同,并始终从零开始: vec1 <- c(0,2,3,4) 使用这两个对象我想创建一个如下所示的矩阵: mat2 <- matrix(c(0,4,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到9的dims矩阵,和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,each=n)) matrix(id,ncol=n) } MakeMatrix(7) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |