When copying environments and all the objects contained within them, there are no copies made: it is a pass-by-reference operation. Sometimes, a deep copy is needed, and sometimes, this must be recursive (i.e., environments inside environments).

Copy(object, filebackedDir = tempdir(), ...)

# S4 method for ANY
Copy(object, filebackedDir = tempdir(), ...)

# S4 method for data.table
Copy(object, filebackedDir = tempdir(), ...)

# S4 method for environment
Copy(object, filebackedDir = tempdir(), ...)

# S4 method for list
Copy(object, filebackedDir = tempdir(), ...)

# S4 method for data.frame
Copy(object, filebackedDir = tempdir(), ...)

# S4 method for Raster
Copy(object, filebackedDir = tempdir(), ...)

Arguments

object

An R object (likely containing environments) or an environment.

filebackedDir

A directory to copy any files that are backing R objects, currently only valid for Raster classes. Defaults to tempdir(), which is unlikely to be very useful.

...

Only used for custom Methods

See also

Examples

e <- new.env() e$abc <- letters e$one <- 1L e$lst <- list(W = 1:10, X = runif(10), Y = rnorm(10), Z = LETTERS[1:10]) ls(e)
#> [1] "abc" "lst" "one"
# 'normal' copy f <- e ls(f)
#> [1] "abc" "lst" "one"
f$one
#> [1] 1
f$one <- 2L f$one
#> [1] 2
e$one ## uh oh, e has changed!
#> [1] 2
# deep copy e$one <- 1L g <- Copy(e) ls(g)
#> [1] "abc" "lst" "one"
g$one
#> [1] 1
g$one <- 3L g$one
#> [1] 3
f$one
#> [1] 1
e$one
#> [1] 1