From 70e1bb9824fc40cf0ac7aa25be98eec695aa33de Mon Sep 17 00:00:00 2001 From: Nicolau Manubens Date: Thu, 24 May 2018 17:53:20 +0200 Subject: [PATCH 1/2] Adding global attribute feature. --- R/ArrayToNc.R | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/R/ArrayToNc.R b/R/ArrayToNc.R index a716232..678a802 100644 --- a/R/ArrayToNc.R +++ b/R/ArrayToNc.R @@ -323,6 +323,12 @@ ArrayToNc <- function(arrays, file_path) { var_counter <- var_counter + 1 } } + # Adding global attributes + if (length(global_attrs) > 0) { + for (attr_name in names(global_attrs)) { + ncatt_put(ncdf_object, 0, attr_name, global_attrs[[attr_name]]) + } + } nc_close(ncdf_object) invisible(NULL) } -- GitLab From 50b4670725f2efa80aa4c7d49777748754065ece Mon Sep 17 00:00:00 2001 From: Nicolau Manubens Date: Thu, 24 May 2018 20:40:39 +0200 Subject: [PATCH 2/2] Possible to specify global attrs. --- R/ArrayToNc.R | 5 ++++- man/ArrayToNc.Rd | 11 +++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/R/ArrayToNc.R b/R/ArrayToNc.R index 678a802..de3367e 100644 --- a/R/ArrayToNc.R +++ b/R/ArrayToNc.R @@ -23,7 +23,10 @@ ArrayToNc <- function(arrays, file_path) { } else { vars_info <- NULL } - global_attrs[names(array_attrs)] <- array_attrs + #global_attrs[names(array_attrs)] <- array_attrs + if ('global_attrs' %in% names(array_attrs)) { + global_attrs <- c(global_attrs, array_attrs[['global_attrs']]) + } var_dim <- which(names(dim(arrays[[i]])) %in% c('var', 'variable')) if (length(var_dim) > 0) { var_dim <- var_dim[1] diff --git a/man/ArrayToNc.Rd b/man/ArrayToNc.Rd index 2eff8fd..7e33ee0 100644 --- a/man/ArrayToNc.Rd +++ b/man/ArrayToNc.Rd @@ -155,6 +155,17 @@ attr(a, 'variables') <- metadata names(dim(a)) <- c('lat', 'lon', 'time', 'var') ArrayToNc(a, 'tmp.nc') +# Global attributes can be specified +a <- array(rnorm(10), dim = c(a = 5, b = 2)) +attrs <- list(variables = + list(tas = list(var_attr_1 = 'test_1_var', + var_attr_2 = 2)), + global_attrs = list(global_attr_name_1 = 'test_1_global', + global_attr_name_2 = 2) + ) +attributes(a) <- c(attributes(a), attrs) +ArrayToNc(a, 'tmp.nc') + # Unlimited dimensions can be manually created a <- array(1:400, dim = c(5, 10, 4, 2)) metadata <- list( -- GitLab