That's a good idea : I didn't realize that my matrices would look so bad in the final email. All I want To do is output 1's in the diagonal elements and zero's everywhere else but the matrix is not square so by diagonals I Really mean if
Lagnum = 1 then the elements are (1,1), (2,2), (3,3),(4,4),(5,5),(6,6) Lagnum = 2 then the elements (1,1), (2,2), (3,3),(4,4),(5,5),(6,6),(7,1),(8,2),(9,3),(10,4),(11,5),(12,6) Lagnum = 3 then the elements (1,1), (2,2), (3,3),(4,4),(5,5),(6,6),(7,1),(8,2),(9,3),(10,4),(11,5),(12,6),(13,1),(1 4,2),(15,3),(16,4),(17,5), (18,6) And lagnum always has to be greater than or equal to 1 and less than or equal to (number of cols/number of rows ). Thanks For your advice. -----Original Message----- From: Bert Gunter [mailto:[EMAIL PROTECTED] Sent: Tuesday, May 08, 2007 5:34 PM To: Leeds, Mark (IED); [email protected] Subject: RE: [R] Looking for a cleaner way to implement a setting certainindices of a matrix to 1 function Suggestion: You might make it easier for folks to help if you explained in clear and simple terms what you are trying to do. Code is hard to deconstruct. Bert Gunter Genentech Nonclinical Statistics -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Leeds, Mark (IED) Sent: Tuesday, May 08, 2007 2:22 PM To: [email protected] Subject: [R] Looking for a cleaner way to implement a setting certainindices of a matrix to 1 function I wrote an ugly algorithm to set certain elements of a matrix to 1 without looping and below works and you can see what The output is below the code. K<-6 lagnum<-2 restrictmat<-matrix(0,nrow=K,ncol=K*3) restrictmat[((col(restrictmat) - row(restrictmat) >= 0 ) & (col(restrictmat)-row(restrictmat)) %% K == 0)]<-1 restrictmat[,(lagnum*K+1):ncol(restrictmat)]<-0 restrictmat [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [1,] 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 [2,] 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 [3,] 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 [4,] 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 [5,] 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 [6,] 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 For lagnum equals 1 , it also works : restrictmat [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [1,] 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 [2,] 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 [3,] 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 [4,] 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 [5,] 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 [6,] 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 But I am thinking that there has to be a better way particularly because I'll get an error if I set lagnum to 3. Any improvements or total revampings are appreciated. The number of columns will always be a multiple of the number of rows So K doesn't have to be 6. that was just to show what the commands do. thanks. -------------------------------------------------------- This is not an offer (or solicitation of an offer) to buy/se...{{dropped}} ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. -------------------------------------------------------- This is not an offer (or solicitation of an offer) to buy/se...{{dropped}} ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
