[R] Subseting in a 3D array
Prof Brian Ripley
ripley at stats.ox.ac.uk
Wed Oct 15 19:42:32 CEST 2003
That does use a for loop inside apply.
I would make use of dim shuffling: you have an array indexed by (x,y,z)
and you want (I presume) a matrix indexed by ((x,y), z) for specified
pairs (x,y).
X <- ib5km15.dbc
dim(X) <- c(190*241, 19)
X[ib5km.lincol.random %*% c(1, 240) - 240, ]
should be something close to what you want if I have read the runes
correctly.
On Wed, 15 Oct 2003, Tony Plate wrote:
> One way would be:
>
> > apply(ib5km.lincol.random[1:3,], 1, function(i) ib5km15.dbc[i[1],i[2],])
>
> (untested)
>
> -- Tony Plate
>
> At Wednesday 06:47 PM 10/15/2003 +0200, Agustin Lobo wrote:
>
> >Hi!
> >
> >I have a 3d array:
> > > dim(ib5km15.dbc)
> >[1] 190 241 19
> >
> >and a set of positions to extract:
> > > ib5km.lincol.random[1:3,]
> > [,1] [,2]
> >[1,] 78 70
> >[2,] 29 213
> >[3,] 180 22
> >
> >Geting the values of a 2D array
> >for that set of positions would
> >be:
> >
> > > ima <- ib5km15.dbc[,,1]
> > > ima[ib5km.lincol.random[1:10,]]
> >
> >but don't find the way for the case
> >of the 3D array:
> >
> > > ib5km15.dbc[ib5km.lincol.random[1:10,],]
> >Error in ib5km15.dbc[ib5km.lincol.random[1:10, ], ] :
> > incorrect number of dimensions
> >
> >Could anyone suggest the way of subseting
> >the 3D array to get a vector of z values
> >for each position recorded in ib5km.lincol.random?
> >(avoiding the use of for loops).
> >
> >Thanks
> >
> >Agus
> >
> >Dr. Agustin Lobo
> >Instituto de Ciencias de la Tierra (CSIC)
> >Lluis Sole Sabaris s/n
> >08028 Barcelona SPAIN
> >tel 34 93409 5410
> >fax 34 93411 0012
> >alobo at ija.csic.es
> >
> >______________________________________________
> >R-help at stat.math.ethz.ch mailing list
> >https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-help
mailing list