[R] Inflate/Expand/Resize an array
r.hankin at noc.soton.ac.uk
Fri Apr 27 12:56:54 CEST 2007
f.dims <- c(10,25,1,1,1,14)
m.dims <- c(10, 1,1,1,1,14)
f <- array(1:prod(f.dims),f.dims)
m <- array(1:prod(m.dims),m.dims)
jj <- do.call(abind,c(rep(list(m),25),along=2))
f + jj
will give you what you want.
The more general problem is a bit harder, as you say....
On 27 Apr 2007, at 10:41, Mark Payne wrote:
> I've had a good look everywhere trying to figure out how to do
> this, but
> I'm afraid I can seem to find an answer anywhere - maybe its
> because I'm
> not using the right terms, or maybe its because I'm a dummy. But
> unfortunately, I am not completely and utterly stuck. Here's the
> I have two large, six dimensional arrays that I would like to add
> together. Lets call them f and m. Their dimensions are respectively:
>  10 25 1 1 1 14
>  10 1 1 1 1 14
> You can see that they're pretty close in size, but not identical.
> What I
> would like to do is expand or inflate m along its second dimension so
> that it ends up with dimension 10 25 1 1 1 14, so that I can then add
> the two together - the new values created along that second dimension
> would simply be copies of the first value..
> What's the fastest way to do this? Is there a dedicated function?
> Ideally I envisage something that you feed the input array, and the
> desired dimensions, and it does the rest for you. Please also bear in
> mind that this is a specific problem - the more general case is
> where I
> don't know which dimensions are "out of shape", so to speak...
> I hope that's clear, and that someone can me out here...
> R-help at stat.math.ethz.ch mailing list
> PLEASE do read the posting guide http://www.R-project.org/posting-
> and provide commented, minimal, self-contained, reproducible code.
National Oceanography Centre, Southampton
European Way, Southampton SO14 3ZH, UK
More information about the R-help