Thanks, Henrique.

The second option you suggested is about twice as fast as my original 
application.

Much appreciated,
Kevin

On Jan 5, 2011, at 6:30 PM, Henrique Dallazuanna wrote:

> Try this:
> 
> apply(apply(m, 2, rep, each = 2), 1, rep, each = 2)
> 
> or
> 
> m[rep(seq(nrow(m)), each = 2), rep(seq(ncol(m)), each = 2)]
> 
> On Wed, Jan 5, 2011 at 10:03 AM, Kevin Ummel <kevinum...@gmail.com> wrote:
> Hi everyone,
> 
> I'm looking for a way to 'explode' a matrix like this:
> 
> > matrix(1:4,2,2)
>     [,1] [,2]
> [1,]    1    3
> [2,]    2    4
> 
> into a matrix like this:
> 
> > matrix(c(1,1,2,2,1,1,2,2,3,3,4,4,3,3,4,4),4,4)
>     [,1] [,2] [,3] [,4]
> [1,]    1    1    3    3
> [2,]    1    1    3    3
> [3,]    2    2    4    4
> [4,]    2    2    4    4
> 
> My current kludge is this:
> 
> v1=rep(1:4,each=2,times=2)
> v2=v1[order(rep(1:2,each=4,times=2))]
> matrix(v2,4,4)
> 
> But I'm hoping there's a more efficient solution that I'm not aware of.
> 
> Many thanks,
> Kevin
> 
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 
> 
> 
> -- 
> Henrique Dallazuanna
> Curitiba-Paraná-Brasil
> 25° 25' 40" S 49° 16' 22" O


        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to