nfVar {nimble} | R Documentation |
Access or set a member variable of a nimbleFunction
Description
Access or set a member variable of a specialized nimbleFunction, i.e. a variable passed to or created during the setup
function that is used in run code or preserved by setupOutputs
. Works in R for any variable and in NIMBLE for numeric variables.
Usage
nfVar(nf, varName)
nfVar(nf, varName) <- value
Arguments
nf |
a specialized nimbleFunction, i.e. a function returned by executing a function returned from |
varName |
a character string naming a variable in the |
value |
value to set the variable to. |
Details
Internal way to access or set a member variable of a nimbleFunction created during setup
. Normally in NIMBLE code you would use nf$var
instead of nfVar(nf, var)
.
When nimbleFunction
is called and a setup
function is provided, then nimbleFunction
returns a function. That function is a generator that should be called with arguments to the setup
function and returns another function with run
and possibly other member functions. The member functions can use objects created or passed to setup
. During internal processing, the NIMBLE compiler turns some cases of nf$var
into nfVar(nf, var)
. These provide direct access to setup variables (member data). nfVar
is not typically called by a NIMBLE user or programmer.
For internal access to methods of nf
, see nfMethod
.
For more information, see ?nimbleFunction
and the NIMBLE User Manual.
Value
whatever varName is in the nimbleFunction nf.
Author(s)
NIMBLE development team
Examples
nfGen1 <- nimbleFunction(
setup = function(A) {
B <- matrix(rnorm(4), nrow = 2)
setupOutputs(B) ## preserves B even though it is not used in run-code
},
run = function() {
print('This is A', A, '\n')
})
nfGen2 <- nimbleFunction(
setup = function() {
nf1 <- nfGen1(1000)
},
run = function() {
print('accessing A:', nfVar(nf1, 'A'))
nfVar(nf1, 'B')[2,2] <<- -1000
print('accessing B:', nfVar(nf1, 'B'))
})
nf2 <- nfGen2()
nf2$run()