[R] Extracting matrix from netCDF file using ncdf4 package

Bert Gunter bgunter.4567 at gmail.com
Sun Jul 3 01:00:26 CEST 2016


I know nothing about netCDF files, but if you can download the file
and make it an array, extraction via indexing takes no time at all:

> ex <-array(rnorm(2*1e4*365, mean = 10), dim = c(100,200,365))

> system.time(test <-ex[35,2,])
   user  system elapsed
      0       0       0

> length(test)
[1] 365


If this can't be done, sorry for the noise.


Cheers,

Bert

Bert Gunter

"The trouble with having an open mind is that people keep coming along
and sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )


On Sat, Jul 2, 2016 at 3:43 PM, Hemant Chowdhary via R-help
<r-help at r-project.org> wrote:
>  I am working with a 3-dimensional netCDF file having dimensions of X=100, Y=200, T=365.
> My objective is to extract time vectors of a few specific grids that may not be contiguous on X and/or Y.
>
> For example, I want to extract a 5x365 matrix where 5 rows are each vectors of length 365 of 5 specific X,Y combinations.
>
> For this, I am currently using the following
>
> reqX = c(35,35,40,65,95);
> reqY = c(2,5,10,112,120,120);
> nD = length(reqX)
> for(i in 1:nD){
> idX = ncvar_get(nc=myNC, varid="myVar", start=c(reqX[i],reqY[i]), count=c(1,1))
> if(i==1){dX = idX} else {dX = rbind(dX,idX)}
> }
>
> Is there more elegant/faster way other than to using a For Loop like this? It seems very slow when I may have to get much larger matrix where nD can be more than 1000.
>
> Thank you HC
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> 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