[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