[R] Fwd: Matrix rotation

Gabor Grothendieck ggrothendieck at gmail.com
Thu Nov 24 19:17:00 CET 2005


Try this:

# cyclically rotate a vector to the right
rot <- function(x) c(x[length(x)], x[-length(x)])

# create a vector from a 2x2 matrix moving left to right along
# first row and then right to left along second row
m2v <- function(m) m[c(1,3,4,2)]

# inverse of m2v.  Note that c(1,4,2,3) equals order(c(1,3,4,2))
v2m <- function(v) matrix(v[c(1,4,2,3)],2)

m <- matrix(1:4, 2, byrow = TRUE)
print(mm <- m)
for(i in 1:4) print(mm <- v2m(rot(m2v(mm))))


On 11/24/05, Benjamin Lloyd-Hughes <blh at cpom.ucl.ac.uk> wrote:
> Ok I warned you that I'd been drinking! What I really meant was
> something to go from:
>
>      [,1] [,2]
> [1,]    1    2
> [2,]    4    3
>
> to
>
>      [,1] [,2]
> [1,]    4    1
> [2,]    3    2
>
> to
>
>      [,1] [,2]
> [1,]    3    4
> [2,]    2    1
>
> to
>
>      [,1] [,2]
> [1,]    2    3
> [2,]    1    4
>
> Sorry for being a muppet, B
>
>
> Begin forwarded message:
>
> > From: Benjamin Lloyd-Hughes <blh at cpom.ucl.ac.uk>
> > Date: 24 November 2005 16:15:58 GMT
> > To: r-help at stat.math.ethz.ch
> > Subject: Matrix rotation
> >
> > Dearest All,
> >
> > Ok so I've had a couple of glasses of wine over lunch today... This is
> > likely to be trivial but I'm struggling to find a more elegant way to
> > obtain the following matrix rotations:
> >
> > > M <- matrix(c(1,0,0,0), ncol=2)
> > > M
> >      [,1] [,2]
> > [1,]    1    0
> > [2,]    0    0
> > > N <- abind(M[2,],M[1,],along=2)
> > > N
> >      [,1] [,2]
> > [1,]    0    1
> > [2,]    0    0
> > > P <- abind(N[2,],N[1,],along=2)
> > > P
> >      [,1] [,2]
> > [1,]    0    0
> > [2,]    0    1
> > > Q <- abind(P[,2],P[,1],along=2)
> > > Q
> >      [,1] [,2]
> > [1,]    0    0
> > [2,]    1    0
> >
> > And, more generally wish to rotate a n-dimensional data cube about
> > some specified axis.
> >
> > Cheers, Ben
> >
>
>        [[alternative text/enriched version deleted]]
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>




More information about the R-help mailing list