Re: [R] elegant matrix creation

From: Spencer Graves <spencer.graves_at_pdf.com>
Date: Thu 29 Jul 2004 - 00:34:00 EST

      It's not obvious what pattern you want, but some variants of the following would work for jj1 and jj2:

      1+outer(1:9, 1:9, "+")%%3

In particular the following are equal to your jj1 and jj2:

jj1. <- 1+outer(0:8, rep(0:2, e=3), "+")%%3

jj2. <- 1+outer(0:8, c(1,2,1,3,1,3,2,3,2)-1, "+")%%3

      I couldn't figure out jj3, but this system may not work so easily for that. hope this helps. spencer graves

Robin Hankin wrote:

>Hello everybody.
>
>I am trying to reproduce a particular matrix in an elegant way. If I
>have
>
>jj1 <-
>structure(c(1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,
>3,1,2,3,1,2,3,1,2,3,2,3,1,2,3,1,2,3,1,2,3,
>1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,3,1,2,3,1,
>2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,
>2),.Dim = as.integer(c(9,9)))
>
>[ image(jj1) is good here ] then I can get this with
>
>kronecker(matrix(1,3,1),kronecker(1+outer(0:2,0:2,"+")%%3,matrix(1,1,3)))
>
>I want to reproduce the following matrices in an equivalent way:
>
>jj2 <- matrix(c(1,2,3,1,2,3,1,2,3,2,3,1,2,3,1,2,3,1,
>1,2,3,1,2,3,1,2,3,3,1,2,3,1,2,3,1,2,1,2,3,1,2,
>3,1,2,3,3,1,2,3,1,2,3,1,2,2,3,1,2,3,1,2,3,1,3,
>1,2,3,1,2,3,1,2,2,3,1,2,3,1,2,3,1),9,9)
>
>jj3 <- structure(c(1,2,3,2,3,1,3,1,2,1,2,1,2,3,2,3,1,
>3,1,3,1,2,1,2,3,2,3,2,3,1,3,1,2,1,2,3,2,3,
>2,3,1,3,1,2,1,2,1,2,3,2,3,1,3,1,3,1,2,1,2,
>3,2,3,1,3,1,3,1,2,1,2,3,2,3,2,3,1,3,1,2,1, 2),.Dim =
>as.integer(c(9,9)))
>
>[ note that jj1-jj3 each have precisely 3 occurrences of A, B, and C
>along each row, column and (broken) diagonal ].
>
>Can anyone give me a nice elegant way of creating jj2 and jj3 please?
>
>
>



R-help@stat.math.ethz.ch mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Thu Jul 29 00:45:19 2004

This archive was generated by hypermail 2.1.8 : Fri 18 Mar 2005 - 02:40:29 EST