Dear R-list, Could anybody tell me how to make one matrix as the below: [,1] [,2] [,3] [,4] [,5] [,6] [1,] - 2 3 4 5 6 [2,] 2 - 2 3 4 5 [3,] 3 2 - 2 3 4 [4,] 4 3 2 - 2 3 [5,] 5 4 3 2 - 2 [6,] 6 5 4 3 2 - Thanks in advance, -- Jose Claudio Faria Brasil/Bahia/UESC/DCET Estatistica Experimental/Prof. Adjunto mails: joseclaudio.faria at terra.com.br jc_faria at uesc.br jc_faria at uol.com.br tel: 73-3634.2779
On 9/10/05, Jose Claudio Faria <joseclaudio.faria at terra.com.br> wrote:> Dear R-list, > > Could anybody tell me how to make one matrix as the below: > > [,1] [,2] [,3] [,4] [,5] [,6] > [1,] - 2 3 4 5 6 > [2,] 2 - 2 3 4 5 > [3,] 3 2 - 2 3 4 > [4,] 4 3 2 - 2 3 > [5,] 5 4 3 2 - 2 > [6,] 6 5 4 3 2 - >Assuming that - means NA dd <- diag(NA, 6) abs(col(dd) - row(dd)) + 1 + dd or abs(outer(1:6, 1:6, "-")) + 1 + diag(NA,6) or f <- function(x,y) ifelse(x==y, NA, abs(x-y)+1) outer(1:6, 1:6, f)
Is this what you want? make.odd.matrix<-function(matsize) { newmat<-matrix(0,nrow=matsize,ncol=matsize) for(i in 1:matsize) { for(j in 1:matsize) newmat[i,j]<-ifelse(i==j,NA,abs(i-j)+1) } return(newmat) } Jim