Skip to content

Commit

Permalink
allow cond_effects to handle functions of variables in formulae
Browse files Browse the repository at this point in the history
  • Loading branch information
Nicholas Clark committed Apr 25, 2024
1 parent 21d383b commit 974a21a
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 13 deletions.
1 change: 1 addition & 0 deletions .github/workflows/R-CMD-check-rstan.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ jobs:
with:
dependencies: NA
extra-packages: |
BH
knitr
extraDistr
lubridate
Expand Down
34 changes: 21 additions & 13 deletions R/conditional_effects.R
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,8 @@ conditional_effects.mvgam = function(x,
}

# Find all possible (up to 2-way) plot conditions
cond_labs <- purrr::flatten(lapply(termlabs, function(x){
all.vars(parse(text = split_termlabs(x)))
cond_labs <- purrr::flatten(lapply(termlabs, function(i){
mvgam:::split_termlabs(i)
}))
} else {
cond_labs <- strsplit(as.character(effects), split = ":")
Expand Down Expand Up @@ -273,26 +273,34 @@ split_termlabs = function(lab){
term_struc$by
}
if(length(term_struc$term) <= 2){
out[[1]] <- c(term_struc$term, term_struc$by)
out[[1]] <- c(all.vars(parse(text = term_struc$term)),
term_struc$by)
}

if(length(term_struc$term) == 3){
out[[1]] <- c(term_struc$term[1:2], term_struc$by)
out[[2]] <- c(term_struc$term[c(1, 3)], term_struc$by)
out[[3]] <- c(term_struc$term[c(2, 3)], term_struc$by)
out[[1]] <- c(all.vars(parse(text = term_struc$term[1:2])),
term_struc$by)
out[[2]] <- c(all.vars(parse(text = term_struc$term[1, 3])),
term_struc$by)
out[[3]] <- c(all.vars(parse(text = term_struc$term[2, 3])),
term_struc$by)
}

if(length(term_struc$term) == 4){
out[[1]] <- c(term_struc$term[1:2], term_struc$by)
out[[2]] <- c(term_struc$term[c(1, 3)], term_struc$by)
out[[3]] <- c(term_struc$term[c(1, 4)], term_struc$by)
out[[4]] <- c(term_struc$term[c(2, 3)], term_struc$by)
out[[5]] <- c(term_struc$term[c(2, 5)], term_struc$by)
out[[1]] <- c(all.vars(parse(text = term_struc$term[1:2])),
term_struc$by)
out[[2]] <- c(all.vars(parse(text = term_struc$term[1, 3])),
term_struc$by)
out[[3]] <- c(all.vars(parse(text = term_struc$term[1, 4])),
term_struc$by)
out[[4]] <- c(all.vars(parse(text = term_struc$term[2, 3])),
term_struc$by)
out[[5]] <- c(all.vars(parse(text = term_struc$term[2, 4])),
term_struc$by)
}

} else if(grepl('dynamic(', lab, fixed = TRUE)){
term_struc <- eval(rlang::parse_expr(lab))
out[[1]] <- c('time', term_struc$term)
out[[1]] <- c('time', all.vars(parse(text = term_struc$term[2, 4])))
} else {
out[[1]] <- lab
}
Expand Down
Binary file modified src/mvgam.dll
Binary file not shown.
Binary file modified tests/testthat/Rplots.pdf
Binary file not shown.

0 comments on commit 974a21a

Please sign in to comment.