Nothing
This is a major restructuring of the code logic to better separate between file-based netCDF objects and in-memory CF objects. Additionally, there are important additions to the user-facing API, in particular with regards to arithmetic, math and logical expressions on CF objects.
CFAxisVertical can now calculate parametric coordinates for two ocean formulations (other formulations will be added as sample data becomes available to test new code on - open an issue if you have such data and are looking for support). Optional use of the units package to deal with the various pressure units. This package is recommended if you work with data on the atmosphere or the ocean.CF$standard_names$find() method. The table (currently 4.3MB) will be stored in the local cache of the ncdfCF package and periodically updated with the latest version.CFArray class has been merged with CFVariable. This makes for more concise code and easier combination of multiple operations on a single netCDF resource. All functionality remains.as_CF() function you can create a CFVariable instance from an R object such as a vector, matrix or array using logical, integer, double or character mode. Axes are created from dimnames, using names when set (such as in dimnames(arr) <- list(X = 40:43, Y = 50:54, Z = 60:65)) and possibly with latitude, longitude and time axes generated.CFVariable instances.CFAxis descendant classes now have a copy() method which creates a deep copy of the axis and a copy_with_values() method that makes a copy of the current axis but with new values.axisB <- axisA$copy(), the new axisB instance will have file access (assuming that axisA has it too). Same with CFVariable$$subset() and $profile(). CFVariable$summarise() does not retain access because the array values are modified. Math and Ops function results likewise do not retain file access.CFAxis$coordinate_range field to retrieve the range of the coordinates of the axis.CFObject, those in NCObject are read from file and immutable.CFVariable has absorbed classes CFArray and CFVariableBase.CFArray$new() writes coordinates attribute for scalar axes.profile() method for CFVariable and CFArray. With this method profiles can be extracted from the data, having a user-selectable dimensionality and location. Examples are temporal profiles at a given location or a zonal (lat or long) vertical profile of the atmosphere, but there are many other options. Multiple profiles can be extracted in a single call and they can be generated as a list of CFArray instances or as a single data.table.append() method for CFArray. With this method you can append a CFArray instance to another CFArray instance, along a single, selectable axis with all other axes being identical. This is especially useful to append time series data spread over multiple files, as is often the case with CMIP data. Given the large size of many such files, it is often necessary to subset() the data variable first before appending.subset() method signature changed to have similar signature as the new profile() method.indexOf() method on axes is using boundary values consistently.CFVariable$subset(time = "2025-04-17").CFArray instance to file automatically orients the data into the canonical axis order of X - Y - Z - T - others.CFAxis has several methods added to work with multiple sets of auxiliary coordinates associated with the axis.CFLabel has print() and write() methods.CFVariable::subset() can subset over a discrete axis with auxiliary coordinates.summarise() can now summarise over eras. This yields a climatological statistic which is now supported with the appropriate "time" axis description.actual_range attribute is set on data arrays, axes and bounds.CFDataset$var_names and CFDataset$axis_names fields.values fields made private. Read-only access provided throughCFAxis$values and CFAxis$coordinates (preferred) for consistent access patterns throughout the axis class hierarchy.print() without enclosing data set.summarise() when temporal result yields scalar time axis.CFArray when the original netCDF file was packed as well.CFData has been renamed CFArray to more accurately describe its contents.CFArray objects can now be written to a netCDF file.CFVariable$summarise() and CFArray$summarise() summarise the temporal dimension of a data object to a lower resolution using a user-supplied function, using the specific calendar of the temporal dimension and returning a new CFArray object with the summarised data for every return value of a call to the function, i.e. the function may have multiple return values. The CFArray version is much faster (because all data has been read already), but the CFVariable version can also summarise data variables that are too big to fit into the available memory entirely. In either case, code is optimized compared to the R base version so an operation over the "time" dimension of a data array is about twice as fast as using the base R apply(X, MARGIN, tapply, INDEX, FUN, ...) call.CFArray$data.table() exports a data object to a data.table.CFVariable and CFArray classes now have time() method to retrieve the "time" axis or its CFTime instance, if present.CFAxis has new coordinates field with which to retrieve the coordinates along the axis.CFResource fixed to conform to new R6 version.peek_ncdf() returns quick-view information on a netCDF resource.makeMemoryGroup(), makeLongitudeAxis() and makeLatitudeAxis() added to create scaffolding for new CF objects.NCGroup::unused() method identifies unused NCVariables to aid in finding issues with netCDF resources.print() method for NCVariable and NCDimension.CFObject$fullname added, giving fully-qualified CF object name.NCGroup moved down to CFObject for CF objects.CFVariable$subset() as an instance of the CFData class, with associated objects such as axes and the attributes from the variable. Data can be read out in a variety of forms, currently as a raw array, an oriented array or as a terra::SpatRaster or terra::SpatRasterDataset.objects_by_standard_name() will list objects in the netCDF resource that have a "standard_name" attribute.dimnames() and length().[ selection operator for use with dimension indices. Use real-world coordinates with subset().Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.