2017-08-09 11 views
3

私の目的は、作成することである。ランダムバイナリ行列

  • エントリのいずれか0又は1とランダムに取り込まマトリックス。この特定の場合、マトリックスは4x24です。
  • 4の各行の行の合計は、正確には6です。
  • 24列のそれぞれの列の合計は正確1

が所望のマトリックスMコールです。 Mを見ているの

別の方法:

  • 1に等しい正確24エントリがあります。
  • 複数の列がありません1エントリ。

進捗:

1エントリと各行の6スポットがあります。残りはゼロです、マトリックスはまばらです。 4行では、のインデックスののインデックスのエントリを格納するインデックスの行列によってMが一意に決定できることを意味します。インデックスのこの行列をindexMと呼んでください。

Iは、交換することなく、サンプリング番号1:24indexMを移入:所与の種について

set.seed(30592) 
colNum <- 24 
rowSum <-6 
numZeros <- colNum-rowSum 

OneRow<-c(rep(1,rowSum),rep(0,numZeros)) 


indexM<-matrix(sample(1:24,replace=FALSE), 
        nrow=4,ncol=6,byrow=TRUE) 

、行列である:https://pastebin.com/8T21MiDv

indexMを希望のスパース行列にするにはどうすればよいですか?

ライブラリでsparseMatrixが見つかりましたが、ベクターインデックスまたは行インデックスと別のベクトルのインデックスが必要です。これは私の持つものとは異なります。

ありがとうございます。

+1

'疎行列(REP(1:4、各= 6)、サンプル(24))' 'の読み取りからかなり直接、それと思われます?sparseMatrix' ..? – Frank

+0

@Frankこれは 'i'と' j'ですか?幻想的な答えの構文を説明することができれば – GFauxPas

答えて

2

私はMatrixライブラリにsparseMatrixを見つけたが、それは私が持っているものではありませんこれは、ベクトルまたは行インデックスおよび列インデックスの別のベクトルを望んでいます。

制約はそれを課す...

  • 行インデックスをrep(1:4, 6)
  • COLインデックスは反転ROWおよび反転COLのインデックス間のマッチがランダム化され1:24

されています。私たちはできる...

戻りますこれらのいずれも
library(Matrix) 

# fix rows, jumble cols 
sparseMatrix(rep(1:4, each=6), sample(1:24)) 

# fix cols, jumble rows 
sparseMatrix(sample(rep(1:4, each=6)), 1:24) 

# jumbl'm all 
sparseMatrix(sample(rep(1:4, each=6)), sample(1:24)) 

何か

4 x 24 sparse Matrix of class "ngCMatrix" 

[1,] . . . . | | . . | . . . | | . | . . . . . . . . 
[2,] . | | . . . | . . | . . . . . . . . | . . . | . 
[3,] . . . | . . . | . . | | . . . . | . . . | . . . 
[4,] | . . . . . . . . . . . . . | . . | . | . | . |