[R] The best way for making speciall matrix

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Sat May 23 12:09:10 CEST 2020


Hello,

Use diag() and cbind().


special_mat <- function(n){
   if(n %% 2 != 0) {
     msg <- paste(sQuote(n), 'is not a multiple of 2, will use')
     n <- 2*(n%/% 2)
     msg <- paste(msg, sQuote(n))
     warning(msg)
   }
   x <- diag(n/2)
   diag(x) <- seq.int(n/2)
   cbind(x, (n/2 + 1):n)
}

special_mat(6)
special_mat(8)
special_mat(7)


Hope this helps,

Rui Barradas

Às 10:45 de 23/05/20, Vahid Borji escreveu:
> Hi my friends,
> 
> I want to make the below matrix in r:
> 
> 1 0 0 4
> 
> 0 2 0 5
> 
> 0 0 3 6
> 
> I used the below code:
> 
> matrix(c(1,0,0,0,2,0,0,0,3,4,5,6),nrow=3)
> 
> My code works. But I do not like my solution way. I am thinking to find the
> simplest way for making this matrix. Do you think my code is the simplest
> code for making this matrix? If not, could anyone writes a simpler code
> than my one?
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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