diff --git a/R/design.R b/R/design.R index 222a8a03..3962ca46 100644 --- a/R/design.R +++ b/R/design.R @@ -28,6 +28,7 @@ design <- function(title = NULL, name = "edibble", .record = TRUE, seed = NULL, anatomy = NULL, recipe = NULL, simulate = list(), + simulate_result = list(), context = NULL), class = c("edbl_design", "edbl")) } diff --git a/R/graph.R b/R/graph.R index 2f8181c6..8269bed0 100644 --- a/R/graph.R +++ b/R/graph.R @@ -18,7 +18,7 @@ #' activate_provenance(takeout()) #' @export activate_provenance <- function(.edibble, - overwrite = c("graph", "anatomy", "recipe", "validation", "simulate")) { + overwrite = c("graph", "anatomy", "recipe", "validation", "simulate", "simulate_result")) { des <- edbl_design(.edibble) prov <- des$provenance if(!is_environment(prov)) { diff --git a/R/provenance.R b/R/provenance.R index b8b1272e..d641c4d1 100644 --- a/R/provenance.R +++ b/R/provenance.R @@ -80,16 +80,20 @@ Provenance <- R6::R6Class("Provenance", rcrds = rcrds) }, - #' @description #' Reactivate the graph in the provenance object. #' @param design An edibble design #' @param overwrite A vector of character to overwrite from the #' supplied design object. - reactivate = function(design, overwrite = c("graph", "anatomy", "recipe", "validation", "simulate")) { + reactivate = function(design, overwrite = c("graph", "anatomy", "recipe", "validation", "simulate", "simualte_result")) { #private$record_track_internal() for(obj in overwrite) { - private[[obj]] <- design[[obj]] + if(obj=="simulate_result") { + private$simulate_result_env <- new_environment() + list2env(design[[obj]], envir = private$simulate_result_env) + } else { + private[[obj]] <- design[[obj]] + } } }, diff --git a/R/utils.R b/R/utils.R index cd942be5..71ce2749 100644 --- a/R/utils.R +++ b/R/utils.R @@ -4,6 +4,10 @@ return_edibble_with_graph <- function(edibble, prov) { des$graph <- prov$get_graph() des$validation <- prov$get_validation() des$simulate <- prov$get_simulate() + sim_res <- ls(envir = prov$get_simulate_result_env()) + if(length(sim_res)) { + des$simulate_result <- mget(sim_res, prov$get_simulate_result_env()) + } if(is_edibble_table(edibble)) { attr(edibble, "design") <- des edibble @@ -415,7 +419,8 @@ print.edbl_fct <- function(x, ...) { # anatomy, # simulate, # context + e1 <- return_edibble_with_graph(e1, prov1) des2 <- edbl_design(e2) - for(code in des2$recipe) e1 <- add_edibble_code(e1, code) - return_edibble_with_graph(e1, prov1) + for(code in des2$recipe[-1]) e1 <- add_edibble_code(e1, code) + e1 }