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@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.


______________________________________________
R-help@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.

Reply via email to