2016-06-11 5 views
0

サイズがnrow(X)のスパース行列を定義する必要があります。これらは3つの行列(II、JK、JH)でできています。そのサイズは3164*1に等しい。 これまでのところ、私は正しくない次のコマンドに行きました。3つの行列を使用して定義されたサイズの疎行列を構築する - R

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

IIは.JKもIIと同じであるが、JKにある間IIの値をソートした(それはrepeatation、例えば10倍の値3と14倍の値4を有する)3から82までの値を有します彼らは持っているし、最後に-1と1のJHを持っています。

また、スパース行列のサイズは83 * 83でなければなりません。

ご協力いただければ幸いです。ここで

おかげ

+0

II、JK、JH、Xの最小限の例を追加してください。あなたの希望する出力。あなたのコード出力がどのように正しくないかを加えてください。これらがなければ、私たちは手助けできません。 – vincentmajor

+1

これは簡単に答えることができますが、データがなければ、多くの推測が必要です。 'II'' JK''JH'の3つのベクトルのどれが行列要素を含んでいますか?どちらが行インデックスを含んでいて、どちらが列インデックスを含んでいますか?たとえば、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は ベクトルがIIJKは、JHが行列として格納されていると述べたので、私はそれらを含めます同じデータクラスを得る。

これらは、1次元行列でも、 無次元ベクトルでも差はありません。次のようにデータのこのタイプ

、スパース行列を生成することができる:この例で使用

7 x 7 sparse Matrix of class "dgTMatrix" 

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

データ:

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

結果は、以下のスパース(7×7)行列であります:

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) 
関連する問題