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 <kevinummel@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]]

