> On Mon, Aug 27, 2012 at 8:40 PM, Roy Mendelssohn <roy.mendelss...@noaa.gov > wrote: > Just looked at your code, and you do call nc_sync. I am wondering if it works if you call nc_close, reopen and > then write. Perhaps the nc_sync is sufficent when you have been in define mode in the nc_create call. > > -Roy
There's always some awkwardness because the netcdf_id object doesn't "know" about changes to the file you've made after creating it. If you could pass objects by reference you could modify the netcdf_id object on each call to ncvar_put, ncatt_put, etc., and the netcdf_id object would always be synchronized with the state of the file. But with R semantics the most straightforward way to do this would be something like this: ncid <- nc_create(...) ncid <- ncvar_put( ncid, ... ) ncid <- ncatt_put( ncid, ... ) etc. which is awkward and ugly. So facing the choice between an awkward and ugly solution that has to be done *every* *single* *time* (passing the ncid in and passing the changed ncid back out on each call) and an awkward and ugly solution that is rare (having to close a file first if you want to create it, modify it, and then read it), I chose the latter. Or, the short form: If you want to create a file and write to it, and then read back in from that same file, close it first and then reopen it. Regards, --Dave > On Aug 27, 2012, at 8:31 PM, Tom Roche wrote: > > > > > summary: I can successfully ncvar_put(...) data to a file, but when I > > try to ncvar_get(...) the same data, I get > > > >> Error in if (nc$var[[li]]$hasAddOffset) addOffset = > nc$var[[li]]$addOffset else addOffset = 0 : > >> argument is of length zero > > > > How to fix or debug? > > > > details: > > > > R code @ > > > > https://github.com/TomRoche/GEIA_to_NetCDF > > > > successfully (if crudely) uses R packages={ncdf4, maps, fields} to > > > > + extract data from a GEIA-distributed datafile > > > > https://github.com/downloads/TomRoche/GEIA_to_netCDF/N2OOC90Y.1A > > > > + display the data (mostly successfully--the map's legend has problems > > which I'll attack later) > > > > https://github.com/downloads/TomRoche/GEIA_to_netCDF/output.1.png > > > > + create a netCDF file using the data read from the GEIA file. (At > > least, after nc_sync(netcdf.file), the file `ncdump -h`s properly.) > > > > However, I can only *put* the data to the netCDF file: > > > >> ncvar_put( > >> + nc=netcdf.file, > >> + varid=emis.var, > >> + vals=t(global.emis.mx), > >> + start=c(1, 1, 1), > >> + count=c(-1,-1, 1)) # -1 -> all data > > > > When I try to *pull* the data *from* the netCDF I created, > > > >>> target.data <- ncvar_get( > >> + nc=netcdf.file, > >> + varid=emis.var, > >> + # read all the data > >> + start=rep(1, emis.var$ndims), > >> + # count=rep(-1, emis.var$ndims)) > > > > I get > > > >> Error in if (nc$var[[li]]$hasAddOffset) addOffset = > nc$var[[li]]$addOffset else addOffset = 0 : > >> argument is of length zero > > > > And I get the same error if I try the minor variation(s) > > > >> target.data <- ncvar_get( > > + nc=netcdf.file, > > + # varid=emis.var, > > + varid=emis.var.name, > > + # read all the data > > + start=rep(1, emis.var$ndims), > > + count=c(-1, -1, 1)) > > > > But the data itself appears to be OK--at least, it virtualizes > > properly (above). So I'm thinking I must just be missing something > > simple, and hoping Someone Out There with fresh eyeballs can point to > > my error(s). > > > > (And, in case you're wondering: > > > > - I'm not just ncvar_put'ing the data for the exercise: I want the > > GEIA data in netCDF format for subsequent use. > > > > - I tried to find the GEIA data distributed in netCDF format, and > > asked around, but have gotten no responses. > > > > ) TIA, Tom Roche <tom_ro...@pobox.com> > > > > _______________________________________________ > > netcdfgroup mailing list > > netcdfgr...@unidata.ucar.edu > > For list information or to unsubscribe, visit: > http://www.unidata.ucar.edu/mailing_lists/ > > ********************** > "The contents of this message do not reflect any position of the U.S. > Government or NOAA." > ********************** > Roy Mendelssohn > Supervisory Operations Research Analyst > NOAA/NMFS > Environmental Research Division > Southwest Fisheries Science Center > 1352 Lighthouse Avenue > Pacific Grove, CA 93950-2097 > > e-mail: roy.mendelss...@noaa.gov (Note new e-mail address) > voice: (831)-648-9029 > fax: (831)-648-8440 > www: http://www.pfeg.noaa.gov/ > > "Old age and treachery will overcome youth and skill." > "From those who have been given much, much will be expected" > "the arc of the moral universe is long, but it bends toward justice" -MLK > Jr. > > _______________________________________________ > netcdfgroup mailing list > netcdfgr...@unidata.ucar.edu > For list information or to unsubscribe, visit: > http://www.unidata.ucar.edu/mailing_lists/ > -- David W. Pierce Division of Climate, Atmospheric Science, and Physical Oceanography Scripps Institution of Oceanography, La Jolla, California, USA (858) 534-8276 (voice) / (858) 534-8561 (fax) dpie...@ucsd.edu [[alternative HTML version deleted]] ______________________________________________ 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.