2016-06-11 17 views
0

我需要定義一個大小爲nrow(X)的稀疏矩陣,它由這三個矩陣(II,JK,JH)組成。他們的大小等於3164*1。 到目前爲止,我得到了以下命令,這是不正確的。使用3個矩陣構建一個具有定義大小的稀疏矩陣-R

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

II有值從3到82(它有repeatation,例如10倍值3個14倍的值4).JK也是一樣II,但在II中的值,而在JK排序他們沒有,最後是JH,它是-1和1.

此外,稀疏矩陣的大小應該是83 * 83。

任何幫助將不勝感激。

感謝

+0

請加上II,JK,JH和X的小例子和你想要的輸出。請同時添加您的代碼輸出方式不正確。沒有這些,我們不能幫助。 – vincentmajor

+1

這將很容易回答,但沒有數據的答案需要大量的猜測。三個向量'II'' JK''JH'中哪個包含矩陣元素?哪一個包含行索引,哪一個列索引?如果您包含一個可重複使用的小例子,例如5x6矩陣,您可以在幾分鐘內得到答案。 – RHertel

+0

@RHertel,我用所需的信息編輯了我的問題。 –

回答

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) 

結果是以下稀疏(7×7)矩陣:在本例中使用

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)