Skip to content

Commit eaba5fa

Browse files
Fixed bugs with node_is_infected(), node_is_recovery(), node_is_latent() for network lists
1 parent dbb89b8 commit eaba5fa

File tree

2 files changed

+23
-26
lines changed

2 files changed

+23
-26
lines changed

R/map_autographr.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ graphr <- autographr
180180
#' #autographs(play_diffusion(ison_adolescents))
181181
#' @export
182182
autographs <- function(netlist, waves,
183-
based_on = c("first","last","both"), ...) {
183+
based_on = c("first", "last", "both"), ...) {
184184
thisRequires("patchwork")
185185
based_on <- match.arg(based_on)
186186
if (any(class(netlist) == "diff_model")) netlist <- to_waves(netlist)

R/mark_nodes.R

+22-25
Original file line numberDiff line numberDiff line change
@@ -145,19 +145,18 @@ NULL
145145
node_is_latent <- function(diff_model, time = 0){
146146
event <- nodes <- NULL
147147
latent <- summary(diff_model) %>%
148-
dplyr::filter(t <= time & event %in% c("E","I")) %>%
149-
dplyr::filter(!duplicated(nodes, fromLast = TRUE)) %>%
150-
dplyr::filter(event == "E") %>%
148+
dplyr::filter(t <= time & event %in% c("E","I"),
149+
!duplicated(nodes, fromLast = TRUE),
150+
event == "E") %>%
151151
dplyr::select(nodes)
152152
net <- attr(diff_model, "network")
153-
if(!manynet::is_labelled(net))
153+
if (!manynet::is_labelled(net))
154154
latent <- dplyr::arrange(latent, nodes) else if (is.numeric(latent$nodes))
155155
latent$nodes <- manynet::node_names(net)[latent$nodes]
156-
if(manynet::is_labelled(net)){
157-
nnames <- manynet::node_names(net)
158-
out <- stats::setNames(nnames %in% latent$nodes, nnames)
156+
if (manynet::is_labelled(net)) {
157+
out <- seq_len(manynet::network_nodes(net)) %in% latent$nodes
158+
names(out) <- manynet::node_names(net)
159159
} else {
160-
seq_len(manynet::network_nodes(net))
161160
out <- seq_len(manynet::network_nodes(net)) %in% latent$nodes
162161
}
163162
make_node_mark(out, net)
@@ -171,19 +170,18 @@ node_is_latent <- function(diff_model, time = 0){
171170
#' # To mark nodes that are infected by a particular time point
172171
#' node_is_infected(play_diffusion(create_tree(6)), time = 1)
173172
#' @export
174-
node_is_infected <- function(diff_model, time = 0){
173+
node_is_infected <- function(diff_model, time = 0) {
175174
event <- nodes <- NULL
176175
infected <- summary(diff_model) %>%
177-
dplyr::filter(t <= time & event %in% c("I","R")) %>%
178-
dplyr::filter(!duplicated(nodes, fromLast = TRUE)) %>%
179-
dplyr::filter(event == "I") %>%
176+
dplyr::filter(t <= time & event %in% c("I","R"),
177+
!duplicated(nodes, fromLast = TRUE),
178+
event == "I") %>%
180179
dplyr::select(nodes)
181180
net <- attr(diff_model, "network")
182-
if(manynet::is_labelled(net)){
183-
nnames <- manynet::node_names(net)
184-
out <- stats::setNames(nnames %in% infected$nodes, nnames)
181+
if (manynet::is_labelled(net)) {
182+
out <- seq_len(manynet::network_nodes(net)) %in% infected$nodes
183+
names(out) <- manynet::node_names(net)
185184
} else {
186-
seq_len(manynet::network_nodes(net))
187185
out <- seq_len(manynet::network_nodes(net)) %in% infected$nodes
188186
}
189187
make_node_mark(out, net)
@@ -197,19 +195,18 @@ node_is_infected <- function(diff_model, time = 0){
197195
node_is_recovered <- function(diff_model, time = 0){
198196
event <- nodes <- NULL
199197
recovered <- summary(diff_model) %>%
200-
dplyr::filter(t <= time & event %in% c("R","S")) %>%
201-
dplyr::filter(!duplicated(nodes, fromLast = TRUE)) %>%
202-
dplyr::filter(event == "R") %>%
198+
dplyr::filter(t <= time & event %in% c("R","S"),
199+
!duplicated(nodes, fromLast = TRUE),
200+
event == "R") %>%
203201
dplyr::select(nodes)
204202
net <- attr(diff_model, "network")
205-
if(!manynet::is_labelled(net))
203+
if (!manynet::is_labelled(net))
206204
recovered <- dplyr::arrange(recovered, nodes) else if (is.numeric(recovered$nodes))
207205
recovered$nodes <- manynet::node_names(net)[recovered$nodes]
208-
if(manynet::is_labelled(net)){
209-
nnames <- manynet::node_names(net)
210-
out <- stats::setNames(nnames %in% recovered$nodes, nnames)
206+
if (manynet::is_labelled(net)){
207+
out <- seq_len(manynet::network_nodes(net)) %in% recovered$nodes
208+
names(out) <- manynet::node_names(net)
211209
} else {
212-
seq_len(manynet::network_nodes(net))
213210
out <- seq_len(manynet::network_nodes(net)) %in% recovered$nodes
214211
}
215212
make_node_mark(out, net)
@@ -236,7 +233,7 @@ node_is_recovered <- function(diff_model, time = 0){
236233
#' @export
237234
node_is_exposed <- function(.data, mark){
238235
event <- nodes <- NULL
239-
if(missing(mark) && inherits(.data, "diff_model")){
236+
if (missing(mark) && inherits(.data, "diff_model")){
240237
mark <- summary(.data) %>%
241238
dplyr::filter(t == 0 & event == "I") %>%
242239
dplyr::select(nodes) %>% unlist()

0 commit comments

Comments
 (0)