Hello,

Please keep this on the list, R-help is threaded and it becomes part of the archives, maybe it will be usefull to others.


You are now asking 2 other different questions.
Are you looking for something like this?

two_values_mat <- function(n, fill = 1, diagonal = 0){
  m <- matrix(fill, nrow = n, ncol = n)
  diag(m) <- diagonal
  m
}
two_values_mat(3)
two_values_mat(3, 0.5, 1)

odd_even_mat <- function(n){
  even <- n %% 2 == 0
  nr <- floor(sqrt(n)) - !even
  nc <- ceiling(n/nr)
  i <- c(0, seq.int(n - even))
  matrix(2*i + !even, nrow = nr, ncol = nc, byrow = TRUE)
}
odd_even_mat(30)
odd_even_mat(17)


Hope this ehlps,

Rui Barradas

Às 11:52 de 23/05/20, Vahid Borji escreveu:
Thank you Rui,
Actually, I am making some matrix as follows:
0 1 1
1 0 1
1 1 0
matrix(rep(c(0,1,1,1),3),nrow=3,ncol=3)
and
1  3   5  7  9  11
13  15  17  19
21   23  25  27
29 31 33 35
i<-0:17 matrix(2*i+1,nrow=3,byrow=TRUE)
and
1      0.5   0.5
0.5     1     0.5
0.5   0.5    1
matrix(rep(c(1,0.5,0.5,0.5),3),nrow=3,ncol=3)

For all the above matrixes I have written a code (as you see below each matrix) . If you want to make the above matrixes, will you use my codes or will you have other simpler ways for making the above matrixes?

On Sat, May 23, 2020 at 2:39 PM Rui Barradas <ruipbarra...@sapo.pt <mailto:ruipbarra...@sapo.pt>> wrote:

    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 <http://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 <mailto: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