The best way for making speciall matrix

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

The best way for making speciall matrix

Vahid
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]]

______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: The best way for making speciall matrix

Ashim Kapoor
Dear Vahid,

Would this help?

> row1<- c(1,0,0,4)
> row2<- c(0,2,0,5)
> row3<- c(0,0,3,6)
> mymatrix <- rbind(row1,row2,row3)
> mymatrix
     [,1] [,2] [,3] [,4]
row1    1    0    0    4
row2    0    2    0    5
row3    0    0    3    6
>

Best Regards,
Ashim

On Sat, May 23, 2020 at 3:16 PM Vahid Borji <[hidden email]> wrote:

>
> 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]]
>
> ______________________________________________
> [hidden email] 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.

______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: The best way for making speciall matrix

Rui Barradas
In reply to this post by Vahid
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]]
>
> ______________________________________________
> [hidden email] 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.
>

______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: The best way for making speciall matrix

Abby Spurdle
In reply to this post by Vahid
This sounds like a homework question...
But... numerical linear algebra rocks...

    cbind (diag (1:3), 4:6)


On Sat, May 23, 2020 at 9:46 PM Vahid Borji <[hidden email]> wrote:

>
> 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]]
>
> ______________________________________________
> [hidden email] 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.

______________________________________________
[hidden email] 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 | Threaded
Open this post in threaded view
|

Re: The best way for making speciall matrix

Rui Barradas
In reply to this post by Rui Barradas
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 <[hidden email]
> <mailto:[hidden email]>> 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]]
>      >
>      > ______________________________________________
>      > [hidden email] <mailto:[hidden email]> 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.
>      >
>

______________________________________________
[hidden email] 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.