Re: [R] How to manipulate an abitrary dimensioned array.

From: Peter Dalgaard <p.dalgaard_at_biostat.ku.dk>
Date: Fri 28 Oct 2005 - 17:28:50 EST

Mike Meyer <mikem@salter-point.com> writes:

> Thanks for the suggestion.
> Perhaps I can see how to use apply to get the ratio, but say I also want
> to return X[,,,,1] in a general way. Maybe I am being dense but I just
> don't see it --- probably as a result of too much Perl/Python/Java
> recently that is clouding my mind.

I think Berton was hinting at

   apply(X,5,"[",1)

(it does get trickier if you need X[,,2,,,1] or X[,,3:4,,,1:2] because dimensions tend to get lost on the way into and out of the apply FUN argument.)

In general, you can use do.call constructs, with TRUE for the missing arguments (there seems to be no nice way to pass missing to do.call).  

> So can someone suggest a general function that will give me the last
> layer of an arbitrary dimensioned array?
>
> Berton Gunter wrote:
> > Why doesn't apply() already do what you want?
> >
> > -- Bert Gunter
> > Genentech Non-Clinical Statistics
> > South San Francisco, CA
> >
> > "The business of the statistician is to catalyze the scientific learning
> > process." - George E. P. Box
> >
> >
> >
> >
> >>-----Original Message-----
> >>From: r-help-bounces@stat.math.ethz.ch
> >>[mailto:r-help-bounces@stat.math.ethz.ch] On Behalf Of Mike Meyer
> >>Sent: Thursday, October 27, 2005 2:50 PM
> >>To: r-help@stat.math.ethz.ch
> >>Subject: [R] How to manipulate an abitrary dimensioned array.
> >>
> >>If I have an n1 x n1 x 2 array X I can calculate, say,
> >>X[,,1]/X[,,2].
> >>
> >>If it is a 4 dimensional array then I want to be able to calculate
> >>X[,,,1]/X[,,,2], and similarly for higher dimensions.
> >>
> >>How can I write a function to do this in a general way
> >>without having to
> >>do a switch for each possible length(dim(X)). So I want a function g
> >>that will take an arbitrary dimensioned array, X, and return
> >>X[,,,1]/X[,,,2], etc. I know how to do this by turning X into a
> >>vector, then doing the division, then re-shaping as an array,
> >>but that
> >>doesn't seem very elegant.
> >>
> >>What I think I am missing is how to paste/substitute/eval a bunch of
> >>commas into an array selection.
> >>
> >>Thanks, --Mike
> >>
> >>--
> >>Mike Meyer, Seattle WA
> >>
> >>______________________________________________
> >>R-help@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
> >>
> >
> >
> > ______________________________________________
> > R-help@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
>
> --
>
> Mike Meyer, Seattle WA
>
> ______________________________________________
> R-help@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
>

-- 
   O__  ---- Peter Dalgaard             ุster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk)                  FAX: (+45) 35327907

______________________________________________
R-help@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
Received on Fri Oct 28 17:34:06 2005

This archive was generated by hypermail 2.1.8 : Fri 28 Oct 2005 - 18:12:52 EST