[R] expand gridded matrix to higher resolution
Jeff Newmiller
jdnewmil at dcn.davis.ca.us
Wed Jul 5 16:57:05 CEST 2017
You probably ought to be using the raster package. See the CRAN Spatial Task View.
--
Sent from my phone. Please excuse my brevity.
On July 5, 2017 12:20:28 AM PDT, "Anthoni, Peter (IMK)" <peter.anthoni at 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 at 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.
More information about the R-help
mailing list