[R] Generating a matrix

arun smartpink111 at yahoo.com
Tue Dec 3 16:54:43 CET 2013


HI,

You could try:
 mat1 <- matrix(0,8,8)
 diag(mat1) <- 5
 mat2 <- apply(mat1,2,rev)
 diag(mat2) <- 5
 indx<- which(mat2==5)
 mat2[indx[indx%%8==1]+1] <-1
mat2[indx[indx%%8==0]-1] <-1
 mat2[indx[!(indx%%8==0 |  indx%%8==1)]-1][mat2[indx[!(indx%%8==0 |indx%%8==1)]-1]==0] <- 1
 mat2[indx[!(indx%%8==0 |  indx%%8==1)]+1][mat2[indx[!(indx%%8==0 |indx%%8==1)]+1]==0] <- 1

A.K.




On Tuesday, December 3, 2013 10:07 AM, Srdjan Santic <srdjan.santic at gmail.com> wrote:
I'm trying to write a function that will generate a NxN matrix that has 
the value K on both diagonals, while the values outside the diagonals 
(up and down) are 1's (for conflicting positions such as [4,5] and [5,4] 
the larger value is written in the matrix). Basically, I'm trying to 
replicate this matrix (where N = 8 and K = 5):

5  1  0  0  0  0  1  5
1  5  1  0  0  1  5  1
0  1  5  1  1  5  1  0
0  0  1  5  5  1  0  0
0  0  1  5  5  1  0  0
0  1  5  1  1  5  1  0
1  5  1  0  0  1  5  1
5  1  0  0  0  0  1  5

Any ideas? Thank you!

Srdjan Santic, M.Sc.
Graduate Student
Faclty of Economics
University of Belgrade
Serbia

---
This email is free from viruses and malware because avast! Antivirus protection is active.

______________________________________________
R-help at r-project.org 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.




More information about the R-help mailing list