Nothing
## ----setup, include = FALSE---------------------------------------------------
# knitr::knit("vignettes/quick_start_guide.Rmd", output = "README.md")
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
library(SharedObject)
## -----------------------------------------------------------------------------
library(parallel)
## Create the cluster
cl <- makeCluster(2)
## Create data
n <- 3
A <- matrix(1:(n^2), n, n)
## Create a shared object
shared_A <- share(A)
## Export the shared object
clusterExport(cl,"shared_A")
## Check the exported object
clusterEvalQ(cl, shared_A)
stopCluster(cl)
## -----------------------------------------------------------------------------
## Check the data
A
shared_A
## Check the class
class(A)
class(shared_A)
## Check if they are identical
identical(A, shared_A)
## -----------------------------------------------------------------------------
## Check if an object is shared
is.shared(A)
is.shared(shared_A)
## -----------------------------------------------------------------------------
## This function has been renamed to `sharedObjectProperties`
## in Bioc 3.13
## get a summary report
getSharedObjectProperty(shared_A)
## get the individual properties
getCopyOnWrite(shared_A)
getSharedSubset(shared_A)
getSharedCopy(shared_A)
## -----------------------------------------------------------------------------
## the element `A` is sharable and `B` is not
x <- list(A = 1:3, B = as.symbol("x"))
## No error will be given,
## but the element `B` is not shared
shared_x <- share(x)
## Use the `mustWork` argument
## An error will be given for the non-sharable object `B`
tryCatch({
shared_x <- share(x, mustWork = TRUE)
},
error=function(msg)message(msg$message)
)
## -----------------------------------------------------------------------------
## A single logical is returned
is.shared(shared_x)
## Check each element in x
is.shared(shared_x, depth = 1)
## -----------------------------------------------------------------------------
## This function has been renamed to `sharedObjectPkgOptions`
## in Bioc 3.13
getSharedObjectOptions()
## -----------------------------------------------------------------------------
## These functions have been renamed to `sharedObjectPkgOptions`
## in Bioc 3.13
## change the default setting
setSharedObjectOptions(mustWork = TRUE)
## Check if the change is made
getSharedObjectOptions("mustWork")
## Resume to default
setSharedObjectOptions(mustWork = FALSE)
## -----------------------------------------------------------------------------
x1 <- share(1:4)
x2 <- x1
## x2 became a regular R object after the change
is.shared(x2)
x2[1] <- 10L
is.shared(x2)
## x1 is not changed
x1
x2
## -----------------------------------------------------------------------------
x1 <- share(1:4, copyOnWrite=FALSE)
x2 <- x1
## x2 will not be duplicated when a change is made
is.shared(x2)
x2[1] <- 0L
is.shared(x2)
## x1 has been changed
x1
x2
## -----------------------------------------------------------------------------
x <- share(1:4, copyOnWrite = FALSE)
x
-x
x
## -----------------------------------------------------------------------------
## Create x1 with copy-on-write off
x1 <- share(1:4, copyOnWrite=FALSE)
x2 <- x1
## change the value of x2
x2[1] <- 0L
## Both x1 and x2 are affected
x1
x2
## Enable copy-on-write
## x2 is now independent with x1
setCopyOnWrite(x2, TRUE)
x2[2] <- 0L
## only x2 is affected
x1
x2
## -----------------------------------------------------------------------------
x1 <- share(1:4)
x2 <- x1
## x2 is not shared after the duplication
is.shared(x2)
x2[1] <- 0L
is.shared(x2)
x1 <- share(1:4, sharedCopy = TRUE)
x2 <- x1
## x2 is still shared(but different from x1)
## after the duplication
is.shared(x2)
x2[1] <- 0L
is.shared(x2)
## -----------------------------------------------------------------------------
sessionInfo()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.