nimCopy {nimble} | R Documentation |
Copying function for NIMBLE
Description
Copies values from a NIMBLE model or modelValues object to another NIMBLE model or modelValues. Work in R and NIMBLE. The NIMBLE keyword copy
is identical to nimCopy
Usage
nimCopy(
from,
to,
nodes = NULL,
nodesTo = NULL,
row = NA,
rowTo = NA,
logProb = FALSE,
logProbOnly = FALSE
)
Arguments
from |
Either a NIMBLE model or modelValues object |
to |
Either a NIMBLE model or modelValues object |
nodes |
Vector of one or more node names of object |
nodesTo |
Vector of one or more node names of object |
row |
If |
rowTo |
If |
logProb |
A logical value indicating whether the log probabilities of the given nodes should also be copied (i.e. if |
logProbOnly |
A logical value indicating whether only the log probabilities of the given nodes should be copied (i.e. if |
Details
This function copies values from one or more nodes (possibly including log probabilities for nodes) between models and modelValues objects. For modelValues objects, the row must be specified. This function allows one to conveniently copy multiple nodes, avoiding having to write a loop.
Author(s)
Clifford Anderson-Bergman
Examples
# Building model and modelValues object
simpleModelCode <- nimbleCode({
for(i in 1:100)
x[i] ~ dnorm(0,1)
})
rModel <- nimbleModel(simpleModelCode)
rModelValues <- modelValues(rModel)
#Setting model nodes
rModel$x <- rnorm(100)
#Using nimCopy in R.
nimCopy(from = rModel, to = rModelValues, nodes = 'x', rowTo = 1)
#Use of nimCopy in a simple nimbleFunction
cCopyGen <- nimbleFunction(
setup = function(model, modelValues, nodeNames){},
run = function(){
nimCopy(from = model, to = modelValues, nodes = nodeNames, rowTo = 1)
}
)
rCopy <- cCopyGen(rModel, rModelValues, 'x')
## Not run:
cModel <- compileNimble(rModel)
cCopy <- compileNimble(rCopy, project = rModel)
cModel[['x']] <- rnorm(100)
cCopy$run() ## execute the copy with the compiled function
## End(Not run)