diff --git a/DESCRIPTION b/DESCRIPTION index 3f6fffe11e7d7162bcb355baf17678cd9f992ddd..4f7c94f7417187f674d1e761d37acf472abb8bd6 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: multiApply Title: Apply Functions to Multiple Multidimensional Arrays or Vectors -Version: 2.1.0 +Version: 2.1.1 Authors@R: c( person("BSC-CNS", role = c("aut", "cph")), person("Nicolau", "Manubens", , "nicolau.manubens@bsc.es", role = "aut"), diff --git a/R/Apply.R b/R/Apply.R index ba213f58993616dcfa92819f1114305fb872b74a..7d46cde4ddd88abdc4586c00a922c64bbf3e2b8f 100644 --- a/R/Apply.R +++ b/R/Apply.R @@ -506,7 +506,7 @@ Apply <- function(data, target_dims = NULL, fun, ..., chunk_sizes <- c(chunk_sizes, total_size %% chunk_size) } - fun_env <- new.env() + fun_env <- new.env(parent = parent.frame()) for (i in seq_along(extra_info)) { assign(names(extra_info)[i], extra_info[[i]], envir = fun_env) } diff --git a/multiApply-manual.pdf b/multiApply-manual.pdf index f5ae17b78b4c01d8c7637076bcd2c2412a9db99d..5a2f348b0e965429433fa55f22b4056849e6e587 100644 Binary files a/multiApply-manual.pdf and b/multiApply-manual.pdf differ diff --git a/tests/testthat/test-use-cases.R b/tests/testthat/test-use-cases.R index b2533c83f2898adc93233eb9553a4d2291ca8394..169366cc57127e4efc4b660da272ec697c5b7ef7 100644 --- a/tests/testthat/test-use-cases.R +++ b/tests/testthat/test-use-cases.R @@ -1357,6 +1357,22 @@ test_that("Dimension names are propagated correctly.", { f) }) +# Test nested environments are linked properly +test_that("Nested environments are linked properly.", { + #create input + forecast <- array(dim = c('31', '12', '4'), + rnorm(31 * 12 * 4)) + names(dim(forecast)) <- c('sday', 'syear', 'ensemble') + + anomaly_simple <- function(data) { + avg <- Apply(data, c('syear', 'ensemble'), mean)[[1]] + anom <- Apply(data, c('sday'), function(x) x - avg)[[1]] + return(anom) + } + + anomaly <- anomaly_simple(forecast) +}) + # TODOS: # TESTS FOR MARGINS # TESTS FOR DISORDERED TARGET_DIMS