Hi Jim, thanks that works like a charm.
cheers Peter > On 5. Jul 2017, at 12:01, Jim Lemon <drjimle...@gmail.com> wrote: > > Hi Peter, > > apply(t(apply(mm,1,rep,each=3)),2,rep,each=3) > > Jim > > On Wed, Jul 5, 2017 at 5:20 PM, Anthoni, Peter (IMK) > <peter.anth...@kit.edu> wrote: >> Hi all, >> (if me email goes out as html, than my email client don't do as told, and I >> apologies already.) >> >> We need to downscale climate data and therefore first need to expand the >> climate from 0.5deg to the higher resolution 10min, before we can add high >> resolution deviations. We basically need to have the original data at each >> gridcell replicated into 3x3 gridcells. >> A simple for loop can do this, but I could need a faster procedure. Anybody >> know a faster way? Is there package than can do what we need already? >> I tried matrix with rep, but I am missing some magic there, since it doesn't >> do what we need. >> replicate might be promising, but then still need to rearrange the output >> into the column and row format we need. >> >> A simple example: >> mm=matrix(1:15,nrow=3,byrow = T) >> xmm=matrix(NA,nrow=nrow(mm)*3,ncol=ncol(mm)*3) >> for(icol in 1:ncol(mm)) { >> for(irow in 1:nrow(mm)) { >> xicol=(icol-1)*3 +c(1:3) >> xirow=(irow-1)*3 +c(1:3) >> xmm[xirow,xicol]=mm[irow,icol] >> } >> } >> mm >>>> mm >>> [,1] [,2] [,3] [,4] [,5] >>> [1,] 1 2 3 4 5 >>> [2,] 6 7 8 9 10 >>> [3,] 11 12 13 14 15 >>> >> xmm >>>> xmm >>> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] >>> [,14] [,15] >>> [1,] 1 1 1 2 2 2 3 3 3 4 4 4 5 >>> 5 5 >>> [2,] 1 1 1 2 2 2 3 3 3 4 4 4 5 >>> 5 5 >>> [3,] 1 1 1 2 2 2 3 3 3 4 4 4 5 >>> 5 5 >>> [4,] 6 6 6 7 7 7 8 8 8 9 9 9 10 >>> 10 10 >>> [5,] 6 6 6 7 7 7 8 8 8 9 9 9 10 >>> 10 10 >>> [6,] 6 6 6 7 7 7 8 8 8 9 9 9 10 >>> 10 10 >>> [7,] 11 11 11 12 12 12 13 13 13 14 14 14 15 >>> 15 15 >>> [8,] 11 11 11 12 12 12 13 13 13 14 14 14 15 >>> 15 15 >>> [9,] 11 11 11 12 12 12 13 13 13 14 14 14 15 >>> 15 15 >> >> I tried various rep with matrix, but don't get the right result. >> xmm2=matrix(rep(rep(mm,each=3),times=3),nrow=nrow(mm)*3,ncol=ncol(mm)*3,byrow >> = F) >>> identical(xmm,xmm2) >> [1] FALSE >> >> rr=replicate(3,rep(t(mm),each=3)) >> rr >>>> rr >>> [,1] [,2] [,3] >>> [1,] 1 1 1 >>> [2,] 1 1 1 >>> [3,] 1 1 1 >>> [4,] 2 2 2 >>> [5,] 2 2 2 >>> [6,] 2 2 2 >>> [7,] 3 3 3 >>> ... >> identical(xmm,matrix(rr,ncol=15,nrow=9,byrow=T)) >>>> identical(xmm,matrix(rr,ncol=15,nrow=9,byrow=T)) >>> [1] FALSE >> >> Many thanks for any advice. >> >> cheers >> Peter >> >> ______________________________________________ >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >> 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. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.