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, ...)

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

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

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

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

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

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

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. Can be NULL, which means that the file will not be copied and could therefore cause a collision as the pre-copied object and post-copied object would have the same file backing them.

...

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