Functions to Access and Edit the Main netsim_dat Object in Network Models
Source:R/net.fn.accessor.R
net-accessor.RdThese get_, set_, append_, and add_
functions allow a safe and efficient way to retrieve and mutate
the main netsim_dat class object of network models
(typical variable name dat).
Usage
get_attr_list(dat, item = NULL)
get_attr(dat, item, posit_ids = NULL, override.null.error = FALSE)
add_attr(dat, item)
set_attr(dat, item, value, posit_ids = NULL, override.length.check = FALSE)
append_attr(dat, item, value, n.new)
remove_node_attr(dat, posit_ids)
get_epi_list(dat, item = NULL)
get_epi(dat, item, at = NULL, override.null.error = FALSE)
add_epi(dat, item)
set_epi(dat, item, at, value)
get_param_list(dat, item = NULL)
get_param(dat, item, override.null.error = FALSE)
add_param(dat, item)
set_param(dat, item, value)
get_control_list(dat, item = NULL)
get_control(dat, item, override.null.error = FALSE)
get_network_control(dat, network, item, override.null.error = FALSE)
add_control(dat, item)
set_control(dat, item, value)
get_init_list(dat, item = NULL)
get_init(dat, item, override.null.error = FALSE)
add_init(dat, item)
set_init(dat, item, value)
append_core_attr(dat, at, n.new)Arguments
- dat
Main
netsim_datobject containing anetworkDynamicobject and other initialization information passed fromnetsim().- item
A character vector containing the name of the element to access (for
get_functions), create (foradd_functions), or edit (forset_andappend_functions). Can be of length > 1 forget_*_listfunctions.- posit_ids
For
set_attrandget_attr, a numeric vector of posit_ids to subset the desireditem.- override.null.error
If TRUE,
get_will return NULL if theitemdoes not exist instead of throwing an error. (default = FALSE).- value
New value to be attributed in the
set_andappend_functions.- override.length.check
If TRUE,
set_attrallows the modification of theitemsize. (default = FALSE).- n.new
For
append_core_attr, the number of new nodes to initiate with core attributes; forappend_attr, the number of new elements to append at the end ofitem.- at
For
get_epi, the timestep at which to access the specifieditem; forset_epi, the timestep at which to add the new value for the epi outputitem; forappend_core_attr, the current time step.- network
index of network for which to get control
Value
A vector or a list of vectors for get_ functions; the main
list object for set_, append_, and add_
functions.
Core Attribute
The append_core_attr function initializes the attributes necessary for
EpiModel to work (the four core attributes are: "active", "unique_id",
"entrTime", and "exitTime"). These attributes are used in the initialization
phase of the simulation, to create the nodes (see
initialize.net()); and also used when adding nodes during the
simulation (see arrivals.net()).
Mutability
The set_, append_, and add_ functions DO NOT modify the
netsim_dat object in place. The result must be assigned back to
dat in order to be registered: dat <- set_*(dat, item, value).
set_ and append_ vs add_
The set_ and append_ functions edit a pre-existing element or
create a new one if it does not exist already by calling the add_
functions internally.
Examples
dat <- create_dat_object(control = list(nsteps = 150))
dat <- append_core_attr(dat, 1, 100)
dat <- add_attr(dat, "age")
dat <- set_attr(dat, "age", runif(100))
dat <- set_attr(dat, "status", rbinom(100, 1, 0.9))
dat <- append_attr(dat, "status", 1, 10)
dat <- append_attr(dat, "age", NA, 10)
get_attr_list(dat)
#> $active
#> [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> [75] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#>
#> $entrTime
#> [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> [75] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#>
#> $exitTime
#> [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [26] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [51] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [76] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#>
#> $unique_id
#> [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#> [19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
#> [37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
#> [55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
#> [73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
#> [91] 91 92 93 94 95 96 97 98 99 100
#>
#> $age
#> [1] 0.000996144 0.229945726 0.014628883 0.535553667 0.608351961 0.644828520
#> [7] 0.399969876 0.236889037 0.727510801 0.189812913 0.610240913 0.746086867
#> [13] 0.178476152 0.523315296 0.463822133 0.083996899 0.557753043 0.671552723
#> [19] 0.260911164 0.387409041 0.214802123 0.547382891 0.828206172 0.037937059
#> [25] 0.830606111 0.229316072 0.180730253 0.283971037 0.853133280 0.770511345
#> [31] 0.648843395 0.257217564 0.210782213 0.205954376 0.018246157 0.558355758
#> [37] 0.883436217 0.705111301 0.020726566 0.964295984 0.312688406 0.808090630
#> [43] 0.011845924 0.960065819 0.398640939 0.669394028 0.622899227 0.643076089
#> [49] 0.329178126 0.293799401 0.764152312 0.385323765 0.149213697 0.634617165
#> [55] 0.824234321 0.299665215 0.668108526 0.870713676 0.349861528 0.931160388
#> [61] 0.541351964 0.131172931 0.877274570 0.033659397 0.505798304 0.115192784
#> [67] 0.058365414 0.454451873 0.741315192 0.056994296 0.991420578 0.345351854
#> [73] 0.569337271 0.667277427 0.545484022 0.953826576 0.874499588 0.305875114
#> [79] 0.103676221 0.059194368 0.044891215 0.454825353 0.470016357 0.984408396
#> [85] 0.235653020 0.110246656 0.185720563 0.282523501 0.749674258 0.709608389
#> [91] 0.378879198 0.995256970 0.214548795 0.403916531 0.423276570 0.835134513
#> [97] 0.386539747 0.023633470 0.557900248 0.207820683 NA NA
#> [103] NA NA NA NA NA NA
#> [109] NA NA
#>
#> $status
#> [1] 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1
#> [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1
#> [75] 1 1 1 1 0 1 1 0 0 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#>
get_attr_list(dat, c("age", "active"))
#> $age
#> [1] 0.000996144 0.229945726 0.014628883 0.535553667 0.608351961 0.644828520
#> [7] 0.399969876 0.236889037 0.727510801 0.189812913 0.610240913 0.746086867
#> [13] 0.178476152 0.523315296 0.463822133 0.083996899 0.557753043 0.671552723
#> [19] 0.260911164 0.387409041 0.214802123 0.547382891 0.828206172 0.037937059
#> [25] 0.830606111 0.229316072 0.180730253 0.283971037 0.853133280 0.770511345
#> [31] 0.648843395 0.257217564 0.210782213 0.205954376 0.018246157 0.558355758
#> [37] 0.883436217 0.705111301 0.020726566 0.964295984 0.312688406 0.808090630
#> [43] 0.011845924 0.960065819 0.398640939 0.669394028 0.622899227 0.643076089
#> [49] 0.329178126 0.293799401 0.764152312 0.385323765 0.149213697 0.634617165
#> [55] 0.824234321 0.299665215 0.668108526 0.870713676 0.349861528 0.931160388
#> [61] 0.541351964 0.131172931 0.877274570 0.033659397 0.505798304 0.115192784
#> [67] 0.058365414 0.454451873 0.741315192 0.056994296 0.991420578 0.345351854
#> [73] 0.569337271 0.667277427 0.545484022 0.953826576 0.874499588 0.305875114
#> [79] 0.103676221 0.059194368 0.044891215 0.454825353 0.470016357 0.984408396
#> [85] 0.235653020 0.110246656 0.185720563 0.282523501 0.749674258 0.709608389
#> [91] 0.378879198 0.995256970 0.214548795 0.403916531 0.423276570 0.835134513
#> [97] 0.386539747 0.023633470 0.557900248 0.207820683 NA NA
#> [103] NA NA NA NA NA NA
#> [109] NA NA
#>
#> $active
#> [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> [75] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#>
get_attr(dat, "status")
#> [1] 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1
#> [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1
#> [75] 1 1 1 1 0 1 1 0 0 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
get_attr(dat, "status", c(1, 4))
#> [1] 1 1
dat <- add_epi(dat, "i.num")
dat <- set_epi(dat, "i.num", 150, 10)
dat <- set_epi(dat, "s.num", 150, 90)
get_epi_list(dat)
#> $i.num
#> [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [26] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [51] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [76] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [101] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [126] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 10
#>
#> $s.num
#> [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [26] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [51] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [76] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [101] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [126] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 90
#>
get_epi_list(dat, c("i.num", "s.num"))
#> $i.num
#> [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [26] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [51] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [76] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [101] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [126] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 10
#>
#> $s.num
#> [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [26] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [51] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [76] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [101] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [126] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 90
#>
get_epi(dat, "i.num")
#> [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [26] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [51] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [76] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [101] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> [126] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 10
get_epi(dat, "i.num", c(1, 4))
#> [1] NA NA
dat <- add_param(dat, "x")
dat <- set_param(dat, "x", 0.4)
dat <- set_param(dat, "y", 0.8)
get_param_list(dat)
#> $x
#> [1] 0.4
#>
#> $y
#> [1] 0.8
#>
get_param_list(dat, c("x", "y"))
#> $x
#> [1] 0.4
#>
#> $y
#> [1] 0.8
#>
get_param(dat, "x")
#> [1] 0.4
dat <- add_init(dat, "x")
dat <- set_init(dat, "x", 0.4)
dat <- set_init(dat, "y", 0.8)
get_init_list(dat)
#> $x
#> [1] 0.4
#>
#> $y
#> [1] 0.8
#>
get_init_list(dat, c("x", "y"))
#> $x
#> [1] 0.4
#>
#> $y
#> [1] 0.8
#>
get_init(dat, "x")
#> [1] 0.4
dat <- add_control(dat, "x")
dat <- set_control(dat, "x", 0.4)
dat <- set_control(dat, "y", 0.8)
get_control_list(dat)
#> $nsteps
#> [1] 150
#>
#> $x
#> [1] 0.4
#>
#> $y
#> [1] 0.8
#>
get_control_list(dat, c("x", "y"))
#> $x
#> [1] 0.4
#>
#> $y
#> [1] 0.8
#>
get_control(dat, "x")
#> [1] 0.4