[R] How to manipulate an abitrary dimensioned array.

Peter Dalgaard p.dalgaard at biostat.ku.dk
Fri Oct 28 09:28:50 CEST 2005


Mike Meyer <mikem at 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 at stat.math.ethz.ch 
> >>[mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Mike Meyer
> >>Sent: Thursday, October 27, 2005 2:50 PM
> >>To: r-help at 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 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
> >>
> > 
> > 
> > ______________________________________________
> > 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
> 
> -- 
> 
> Mike Meyer,  Seattle WA
> 
> ______________________________________________
> 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
> 

-- 
   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 at biostat.ku.dk)                  FAX: (+45) 35327907




More information about the R-help mailing list