# I have managed to get the list of all possible models but I haven't found a way of adding the offset term in the models, as shown by the last line that gives an error.
#https://stackoverflow.com/questions/5300595/automatically-create-formulas-for-all-possible-linear-models
regressors <- c("scale_prop_adults_mean", "scale_m_f_adult_ratio_1",
"scale_clinic_distance_1km", "scale_perc_hiv_mean")
regMat <- expand.grid(c(TRUE,FALSE), c(TRUE,FALSE),
c(TRUE,FALSE), c(TRUE,FALSE))
regMat
#> Var1 Var2 Var3 Var4
#> 1 TRUE TRUE TRUE TRUE
#> 2 FALSE TRUE TRUE TRUE
#> 3 TRUE FALSE TRUE TRUE
#> 4 FALSE FALSE TRUE TRUE
#> 5 TRUE TRUE FALSE TRUE
#> 6 FALSE TRUE FALSE TRUE
#> 7 TRUE FALSE FALSE TRUE
#> 8 FALSE FALSE FALSE TRUE
#> 9 TRUE TRUE TRUE FALSE
#> 10 FALSE TRUE TRUE FALSE
#> 11 TRUE FALSE TRUE FALSE
#> 12 FALSE FALSE TRUE FALSE
#> 13 TRUE TRUE FALSE FALSE
#> 14 FALSE TRUE FALSE FALSE
#> 15 TRUE FALSE FALSE FALSE
#> 16 FALSE FALSE FALSE FALSE
#regMat <- regMat[-(dim(regMat)[1]),]
# let's name the columns
names(regMat) <- regressors
allModelsList <- apply(regMat, 1, function(x) as.formula(
paste(c("n_prev_tbcases ~ 1", regressors[x]),
collapse=" + ")) )
#How can I add an offset offset(log(tent_cxr_total)) term without getting an error
#i.e n_prev_tbcases ~ 1 + offset(log(tent_cxr_total))
allModelsList <- apply(regMat, 1, function(x) as.formula(
paste(c("n_prev_tbcases ~ 1", regressors[x]),"offset(log(tent_cxr_total))",
collapse=" + ")) )
#> Error in str2lang(x): <text>:1:20: unexpected symbol
#> 1: n_prev_tbcases ~ 1 offset
#> ^
Created on 2021-02-23 by the reprex package (v0.3.0)