[R] aperm() and as.list() args to "["
    Robin Hankin 
    rksh at soc.soton.ac.uk
       
    Wed Mar 10 17:21:08 CET 2004
    
    
  
Many thanks to everyone who replied (online and offline) to my query 
about permutations.
There appear to be two independent ways of solving it:
(1) matrix indexing, as in
       b[rbind(c(1,3,2,1)[permutation])]
(2) do.call(), as in
ind <- as.list(c(1,3,2,1)[permutation])
do.call("[", c(list(b), ind))
I found both these very instructive (us ex-matlab users often 
overlook matrix indexing!) but to me the
do.call() solution is positively sublime (Peter, why didn't you like 
it? let's get an aesthetics discussion going!)
I spent some considerable time over lunch today reading the helppages 
for do.call(), "[", and c().
There is no way under the Sun that I would have come up with the 
second command above.
Could we add this example or one like it to help(do.call)?
Also, the help page for "[" doesn't include what do.call() did, namely
"["(b,1,3,1,2)
could we add this or some similar example to ?"[" please?
cheers
rksh
>
>  >
>>  a <- 1:24
>>  dim(a) <- c(2,3,2,2)
>>  permutation <-  c(1,2,4,3)
>>  b <- aperm(a,permutation)
>  >
>  >
-- 
Robin Hankin
Uncertainty Analyst
Southampton Oceanography Centre
SO14 3ZH
tel +44(0)23-8059-7743
initialDOTsurname at soc.soton.ac.uk (edit in obvious way; spam precaution)
    
    
More information about the R-help
mailing list