[R] The best way for making speciall matrix
Rui Barradas
ru|pb@rr@d@@ @end|ng |rom @@po@pt
Sat May 23 13:25:36 CEST 2020
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 <ruipbarradas using sapo.pt
> <mailto:ruipbarradas using 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 using r-project.org <mailto: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