使用3个矩阵构建具有定义大小的稀疏矩阵 - R.

时间:2016-06-11 16:23:31

标签: r matrix

我需要定义一个大小为nrow(X)的稀疏matix,它由这三个矩阵(II,JK,JH)组成。他们的大小等于3164*1。 到目前为止,我得到了以下不正确的命令。

Gradient <- sparseMatrix(II,JK,JH, dims=c(nrow(X),nrow(X)))

II具有从3到82的值(它具有重复,例如10倍值3和14倍值4).JK也与II相同,但是在II中,值被分类,而在JK中它们没有最后是-1和1的JH。

稀疏矩阵的大小也应该是83 * 83。

任何帮助都会感激不尽。

由于

1 个答案:

答案 0 :(得分:0)

以下是可能帮助的示例。帖子中的信息不足以确定,但具体到足以假设这一点 这种类型的矩阵或转置是期望的结果。

首先我们创建一些模拟数据

set.seed(42) # for reproducibility of the example
II <- as.matrix(sample(7,replace=TRUE))
JK <- as.matrix(sample(7,replace=TRUE))
JH <- sample(c(1,-1),length(II),replace=TRUE)

注意:上面的as.matrix()命令是不必要的,但OP说明了这一点 向量IIJKJH存储为矩阵,因此我将它们包含在内以获取相同的数据类。

无论是一维矩阵还是一维矩阵都没有任何区别 无量纲向量。

使用这种类型的数据,可以按如下方式生成稀疏矩阵:

library(Matrix)
spMatrix(max(II), max(JK), i = II, j = JK, x = JH)

结果是以下稀疏(7x7)矩阵:

7 x 7 sparse Matrix of class "dgTMatrix"

[1,] .  . . .  . .  .
[2,] .  . . .  . .  .
[3,] .  . . . -1 .  .
[4,] .  . . .  . . -1
[5,] .  . . .  . 1  .
[6,] . -1 . 1  . .  .
[7,] 1  . . . -1 .  . 

此示例中使用的数据:

Row indices:
II <-  as.matrix(c(7, 7, 3, 6, 5, 4, 6))
Column indices:
JK <- as.matrix(c(1, 5, 5, 4, 6, 7, 2))
Matrix elements:
JH <- c(1, -1, -1,  1,  1, -1, -1)