diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2498bcc..a425bbd 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,9 +3,9 @@ repos: - repo: https://github.com/lorenzwalthert/precommit rev: v0.1.3 - hooks: + hooks: - id: style-files - args: [--style_pkg=styler, --style_fun=tidyverse_style] + args: [--style_pkg=styler, --style_fun=tidyverse_style] - id: roxygenize # codemeta must be above use-tidy-description when both are used # - id: codemeta-description-updated @@ -13,7 +13,7 @@ repos: - id: spell-check exclude: > (?x)^( - data/.*| + data/.*| (.*/|)\.Rprofile| (.*/|)\.Renviron| (.*/|)\.gitignore| @@ -32,14 +32,14 @@ repos: .*\.sh| .*\.RData )$ - - id: lintr + #- id: lintr - id: readme-rmd-rendered - id: parsable-R - id: no-browser-statement - id: deps-in-desc - repo: https://github.com/pre-commit/pre-commit-hooks rev: v3.4.0 - hooks: + hooks: - id: check-added-large-files args: ['--maxkb=200'] - id: end-of-file-fixer diff --git a/05-origami.Rmd b/05-origami.Rmd index 4deeea5..51f05e1 100644 --- a/05-origami.Rmd +++ b/05-origami.Rmd @@ -212,7 +212,7 @@ washb_data <- fread( washb_data <- washb_data[1:30, ] head(washb_data) %>% kable() %>% - kableExtra:::kable_styling(fixed_thead = TRUE) %>% + kableExtra::kable_styling(fixed_thead = TRUE) %>% scroll_box(width = "100%", height = "300px") ``` @@ -655,7 +655,7 @@ covars <- colnames(washb_data)[-which(names(washb_data) == outcome)] head(washb_data) %>% kable() %>% - kableExtra:::kable_styling(fixed_thead = TRUE) %>% + kableExtra::kable_styling(fixed_thead = TRUE) %>% scroll_box(width = "100%", height = "300px") ``` diff --git a/06-sl3.Rmd b/06-sl3.Rmd index 9f5a824..398e43e 100644 --- a/06-sl3.Rmd +++ b/06-sl3.Rmd @@ -315,7 +315,7 @@ washb_data <- fread( ) head(washb_data) %>% kable() %>% - kableExtra:::kable_styling(fixed_thead = T) %>% + kableExtra::kable_styling(fixed_thead = T) %>% scroll_box(width = "100%", height = "300px") ``` @@ -800,7 +800,7 @@ CVsl <- CV_lrnr_sl( ) CVsl %>% kable(digits = 4) %>% - kableExtra:::kable_styling(fixed_thead = TRUE) %>% + kableExtra::kable_styling(fixed_thead = TRUE) %>% scroll_box(width = "100%", height = "300px") ``` @@ -838,7 +838,7 @@ Let's explore the `sl3` variable importance measurements for the `washb` data. washb_varimp <- importance(sl_fit, loss = loss_squared_error, type = "permute") washb_varimp %>% kable(digits = 4) %>% - kableExtra:::kable_styling(fixed_thead = TRUE) %>% + kableExtra::kable_styling(fixed_thead = TRUE) %>% scroll_box(width = "100%", height = "300px") ``` @@ -872,7 +872,7 @@ chspred <- read_csv(file = db_data, col_names = TRUE) # take a quick peek head(chspred) %>% kable(digits = 4) %>% - kableExtra:::kable_styling(fixed_thead = TRUE) %>% + kableExtra::kable_styling(fixed_thead = TRUE) %>% scroll_box(width = "100%", height = "300px") ``` diff --git a/11-tmle3survival.Rmd b/11-tmle3survival.Rmd index 37f6009..7d30577 100644 --- a/11-tmle3survival.Rmd +++ b/11-tmle3survival.Rmd @@ -36,13 +36,15 @@ library(sl3) ```{r} vet_data <- read.csv( - paste0("https://raw.githubusercontent.com/tlverse/deming2019-workshop/", - "master/data/veteran.csv") + paste0( + "https://raw.githubusercontent.com/tlverse/deming2019-workshop/", + "master/data/veteran.csv" + ) ) vet_data$trt <- vet_data$trt - 1 # make fewer times for illustration vet_data$time <- ceiling(vet_data$time / 20) -k_grid <- seq_len(:max(vet_data$time)) +k_grid <- seq_len(max(vet_data$time)) head(vet_data) ``` @@ -70,14 +72,20 @@ speficy W (covariates), A (treatment/intervention), T_tilde (time-to-event vector), Delta (censoring indicator vector), and row ids for the nodelist. ```{r} -var_types <- list(T_tilde = Variable_Type$new("continuous"), - t = Variable_Type$new("continuous"), - Delta = Variable_Type$new("binomial")) -survival_spec <- tmle_survival(treatment_level = 1, control_level = 0, - target_times = intersect(1:10, k_grid), - variable_types = var_types) -node_list <- list(W = c("celltype", "karno", "diagtime", "age", "prior"), - A = "trt", T_tilde = "time", Delta = "status", id ="X") +var_types <- list( + T_tilde = Variable_Type$new("continuous"), + t = Variable_Type$new("continuous"), + Delta = Variable_Type$new("binomial") +) +survival_spec <- tmle_survival( + treatment_level = 1, control_level = 0, + target_times = intersect(1:10, k_grid), + variable_types = var_types +) +node_list <- list( + W = c("celltype", "karno", "diagtime", "age", "prior"), + A = "trt", T_tilde = "time", Delta = "status", id = "X" +) long_data_tuple <- survival_spec$transform_data(vet_data, node_list) df_long <- long_data_tuple$long_data @@ -98,8 +106,10 @@ learner_list <- list(A = sl_A, N = sl_A, A_c = sl_A) ```{r} tmle_task <- survival_spec$make_tmle_task(df_long, long_node_list) -initial_likelihood <- survival_spec$make_initial_likelihood(tmle_task, - learner_list) +initial_likelihood <- survival_spec$make_initial_likelihood( + tmle_task, + learner_list +) ``` ### Perform TMLE adjustment of the initial conditional survival estimate @@ -116,11 +126,12 @@ up <- tmle3_Update_survival$new( delta_epsilon = 1e-2, fit_method = "l2", use_best = TRUE, - verbose=FALSE + verbose = FALSE ) targeted_likelihood <- Targeted_Likelihood$new(initial_likelihood, - updater = up) + updater = up +) tmle_params <- survival_spec$make_params(tmle_task, targeted_likelihood) tmle_fit_manual <- fit_tmle3( tmle_task, targeted_likelihood, tmle_params, diff --git a/Makefile b/Makefile index ef4a12b..4d7caac 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,6 @@ style: Rscript -e "styler::style_dir(filetype = 'rmd')" code: - rm R/*.R + rm -f R_code/*.R R CMD BATCH purl.R rm purl.Rout .RData diff --git a/R/01-preface.R b/R/01-preface.R deleted file mode 100644 index 8b13789..0000000 --- a/R/01-preface.R +++ /dev/null @@ -1 +0,0 @@ - diff --git a/R/10-tmle3mediate.R b/R/10-tmle3mediate.R deleted file mode 100644 index 8b13789..0000000 --- a/R/10-tmle3mediate.R +++ /dev/null @@ -1 +0,0 @@ - diff --git a/R/99-primer_R6.R b/R/99-primer_R6.R deleted file mode 100644 index 8b13789..0000000 --- a/R/99-primer_R6.R +++ /dev/null @@ -1 +0,0 @@ - diff --git a/R/.gitkeep b/R_code/.gitkeep similarity index 100% rename from R/.gitkeep rename to R_code/.gitkeep diff --git a/R_code/01-preface.R b/R_code/01-preface.R new file mode 100644 index 0000000..e69de29 diff --git a/R/02-roadmap.R b/R_code/02-roadmap.R similarity index 99% rename from R/02-roadmap.R rename to R_code/02-roadmap.R index cca11ce..4c45389 100644 --- a/R/02-roadmap.R +++ b/R_code/02-roadmap.R @@ -18,4 +18,3 @@ tidy_dag <- tidy_dagitty(dag) # visualize DAG ggdag(tidy_dag) + theme_dag() - diff --git a/R/03-tlverse.R b/R_code/03-tlverse.R similarity index 50% rename from R/03-tlverse.R rename to R_code/03-tlverse.R index 14f4062..c39cd42 100644 --- a/R/03-tlverse.R +++ b/R_code/03-tlverse.R @@ -1,4 +1,3 @@ ## ----installation, eval=FALSE------------------------------------------------- -## install.packages("usethis") -## usethis::install_github("tlverse/tlverse") - +## install.packages("devtools") +## devtools::install_github("tlverse/tlverse") diff --git a/R/04-data.R b/R_code/04-data.R similarity index 99% rename from R/04-data.R rename to R_code/04-data.R index e0c8885..ff1c2e4 100644 --- a/R/04-data.R +++ b/R_code/04-data.R @@ -60,4 +60,3 @@ if (knitr::is_latex_output()) { } else { skim(nhefs_data) } - diff --git a/R/05-origami.R b/R_code/05-origami.R similarity index 98% rename from R/05-origami.R rename to R_code/05-origami.R index 28abcdc..c656fe7 100644 --- a/R/05-origami.R +++ b/R_code/05-origami.R @@ -16,7 +16,7 @@ washb_data <- fread( washb_data <- washb_data[1:30, ] head(washb_data) %>% kable() %>% - kableExtra:::kable_styling(fixed_thead = TRUE) %>% + kableExtra::kable_styling(fixed_thead = TRUE) %>% scroll_box(width = "100%", height = "300px") @@ -122,7 +122,7 @@ covars <- colnames(washb_data)[-which(names(washb_data) == outcome)] head(washb_data) %>% kable() %>% - kableExtra:::kable_styling(fixed_thead = TRUE) %>% + kableExtra::kable_styling(fixed_thead = TRUE) %>% scroll_box(width = "100%", height = "300px") @@ -285,4 +285,3 @@ mses <- cross_validate( ) mses$mse colMeans(mses$mse[, c("arima", "arima2")]) - diff --git a/R/06-sl3.R b/R_code/06-sl3.R similarity index 96% rename from R/06-sl3.R rename to R_code/06-sl3.R index 0921188..2903823 100644 --- a/R/06-sl3.R +++ b/R_code/06-sl3.R @@ -23,7 +23,7 @@ washb_data <- fread( ) head(washb_data) %>% kable() %>% - kableExtra:::kable_styling(fixed_thead = T) %>% + kableExtra::kable_styling(fixed_thead = T) %>% scroll_box(width = "100%", height = "300px") @@ -50,7 +50,10 @@ length(washb_task$folds) # how many folds? head(washb_task$folds[[1]]$training_set) # row indexes for fold 1 training head(washb_task$folds[[1]]$validation_set) # row indexes for fold 1 validation -any(washb_task$folds[[1]]$training_set %in% washb_task$folds[[1]]$validation_set) +any( + washb_task$folds[[1]]$training_set %in% + washb_task$folds[[1]]$validation_set +) ## ----list-properties---------------------------------------------------------- @@ -89,7 +92,7 @@ lrn_interaction <- make_learner(Lrnr_define_interactions, interactions) ## ----interaction-pipe--------------------------------------------------------- -# we already instantiated a linear model learner above, no need to do that again +# we already instantiated a linear model learner above, no need to do it again lrn_glm_interaction <- make_learner(Pipeline, lrn_interaction, lrn_glm) lrn_glm_interaction @@ -126,7 +129,7 @@ xgb_learners <- apply(grid, MARGIN = 1, function(tuning_params) { xgb_learners -## ----carotene, eval = FALSE--------------------------------------------------- +## ----carotene, eval=FALSE----------------------------------------------------- ## # Unlike xgboost, I have no idea how to tune a neural net or BART machine, so ## # I let caret take the reins ## lrnr_caret_nnet <- make_learner(Lrnr_caret, algorithm = "nnet") @@ -147,7 +150,9 @@ stack ## ----alt-stack---------------------------------------------------------------- # named vector of learners first learners <- c(lrn_glm, lrn_polspline, lrn_enet.5, lrn_ridge, lrn_lasso, xgb_50) -names(learners) <- c("glm", "polspline", "enet.5", "ridge", "lasso", "xgboost50") +names(learners) <- c( + "glm", "polspline", "enet.5", "ridge", "lasso", "xgboost50" +) # next make the stack stack <- make_learner(Stack, learners) # now the names are pretty @@ -231,13 +236,13 @@ head(sl_preds) ## ---- plot-predvobs-woohoo, eval=FALSE---------------------------------------- -## +## ## # df_plot <- data.frame(Observed = washb_data[["whz"]], Predicted = sl_preds, ## # count = seq(1:nrow(washb_data)) -## +## ## # df_plot_melted <- melt(df_plot, id.vars = "count", ## # measure.vars = c("Observed", "Predicted")) -## +## ## # ggplot(df_plot_melted, aes(value, count, color = variable)) + geom_point() @@ -257,7 +262,7 @@ CVsl <- CV_lrnr_sl( ) CVsl %>% kable(digits = 4) %>% - kableExtra:::kable_styling(fixed_thead = T) %>% + kableExtra::kable_styling(fixed_thead = TRUE) %>% scroll_box(width = "100%", height = "300px") @@ -265,7 +270,7 @@ CVsl %>% washb_varimp <- importance(sl_fit, loss = loss_squared_error, type = "permute") washb_varimp %>% kable(digits = 4) %>% - kableExtra:::kable_styling(fixed_thead = TRUE) %>% + kableExtra::kable_styling(fixed_thead = TRUE) %>% scroll_box(width = "100%", height = "300px") @@ -290,7 +295,7 @@ chspred <- read_csv(file = db_data, col_names = TRUE) # take a quick peek head(chspred) %>% kable(digits = 4) %>% - kableExtra:::kable_styling(fixed_thead = TRUE) %>% + kableExtra::kable_styling(fixed_thead = TRUE) %>% scroll_box(width = "100%", height = "300px") @@ -319,14 +324,14 @@ ist_task_CVsl <- make_sl3_Task( ## "https://raw.githubusercontent.com/benkeser/sllecture/master/chspred.csv" ## ) ## chspred <- read_csv(file = db_data, col_names = TRUE) -## +## ## # make task ## chspred_task <- make_sl3_Task( ## data = chspred, ## covariates = head(colnames(chspred), -1), ## outcome = "mi" ## ) -## +## ## # make learners ## glm_learner <- Lrnr_glm$new() ## lasso_learner <- Lrnr_glmnet$new(alpha = 1) @@ -339,11 +344,11 @@ ist_task_CVsl <- make_sl3_Task( ## ranger_learner <- Lrnr_ranger$new() ## svm_learner <- Lrnr_svm$new() ## xgb_learner <- Lrnr_xgboost$new() -## +## ## # screening ## screen_cor <- make_learner(Lrnr_screener_correlation) ## glm_pipeline <- make_learner(Pipeline, screen_cor, glm_learner) -## +## ## # stack learners together ## stack <- make_learner( ## Stack, @@ -352,17 +357,17 @@ ist_task_CVsl <- make_sl3_Task( ## curated_glm_learner, mean_learner, glm_fast_learner, ## ranger_learner, svm_learner, xgb_learner ## ) -## +## ## # make and train SL ## sl <- Lrnr_sl$new( ## learners = stack ## ) ## sl_fit <- sl$train(chspred_task) ## sl_fit$print() -## +## ## CVsl <- CV_lrnr_sl(sl_fit, chspred_task, loss_loglik_binomial) ## CVsl -## +## ## varimp <- importance(sl_fit, type = "permute") ## varimp %>% ## importance_plot( @@ -372,12 +377,12 @@ ist_task_CVsl <- make_sl3_Task( ## ----ex2-key, eval=FALSE------------------------------------------------------ ## library(ROCR) # for AUC calculation -## +## ## ist_data <- paste0( ## "https://raw.githubusercontent.com/tlverse/", ## "tlverse-handbook/master/data/ist_sample.csv" ## ) %>% fread() -## +## ## # stack ## ist_task <- make_sl3_Task( ## data = ist_data, @@ -385,7 +390,7 @@ ist_task_CVsl <- make_sl3_Task( ## covariates = colnames(ist_data)[-which(names(ist_data) == "DRSISC")], ## drop_missing_outcome = TRUE ## ) -## +## ## # learner library ## lrn_glm <- Lrnr_glm$new() ## lrn_lasso <- Lrnr_glmnet$new(alpha = 1) @@ -410,17 +415,17 @@ ist_task_CVsl <- make_sl3_Task( ## ), ## recursive = TRUE ## ) -## +## ## # SL ## sl <- Lrnr_sl$new(learners) ## sl_fit <- sl$train(ist_task) -## +## ## # AUC ## preds <- sl_fit$predict() ## obs <- c(na.omit(ist_data$DRSISC)) ## AUC <- performance(prediction(sl_preds, obs), measure = "auc")@y.values[[1]] ## plot(performance(prediction(sl_preds, obs), "tpr", "fpr")) -## +## ## # CVsl ## ist_task_CVsl <- make_sl3_Task( ## data = ist_data, @@ -435,7 +440,7 @@ ist_task_CVsl <- make_sl3_Task( ## ) ## CVsl <- CV_lrnr_sl(sl_fit, ist_task_CVsl, loss_loglik_binomial) ## CVsl -## +## ## # sl3 variable importance plot ## ist_varimp <- importance(sl_fit, type = "permute") ## ist_varimp %>% @@ -446,4 +451,3 @@ ist_task_CVsl <- make_sl3_Task( ## ----ex3-key, eval=FALSE------------------------------------------------------ ## # TODO - diff --git a/R/07-tmle3.R b/R_code/07-tmle3.R similarity index 97% rename from R/07-tmle3.R rename to R_code/07-tmle3.R index 5fa829d..dff5eda 100644 --- a/R/07-tmle3.R +++ b/R_code/07-tmle3.R @@ -56,7 +56,7 @@ ate_spec <- tmle_ATE( ## ----tmle3-learner-list------------------------------------------------------- # choose base learners lrnr_mean <- make_learner(Lrnr_mean) -lrnr_xgb <- make_learner(Lrnr_xgboost) +lrnr_rf <- make_learner(Lrnr_ranger) # define metalearners appropriate to data types ls_metalearner <- make_learner(Lrnr_nnls) @@ -65,11 +65,11 @@ mn_metalearner <- make_learner( loss_loglik_multinomial ) sl_Y <- Lrnr_sl$new( - learners = list(lrnr_mean, lrnr_xgb), + learners = list(lrnr_mean, lrnr_rf), metalearner = ls_metalearner ) sl_A <- Lrnr_sl$new( - learners = list(lrnr_mean, lrnr_xgb), + learners = list(lrnr_mean, lrnr_rf), metalearner = mn_metalearner ) learner_list <- list(A = sl_A, Y = sl_Y) @@ -183,4 +183,3 @@ ist_data <- fread( "master/data/ist_sample.csv" ) ) - diff --git a/R/08-tmle3mopttx.R b/R_code/08-tmle3mopttx.R similarity index 99% rename from R/08-tmle3mopttx.R rename to R_code/08-tmle3mopttx.R index 42f3edf..5131c87 100644 --- a/R/08-tmle3mopttx.R +++ b/R_code/08-tmle3mopttx.R @@ -308,4 +308,3 @@ tmle_spec <- tmle3_mopttx_blip_revere( # fit the TML estimator fit <- tmle3(tmle_spec, data = washb_data, node_list, learner_list) fit - diff --git a/R/09-tmle3shift.R b/R_code/09-tmle3shift.R similarity index 99% rename from R/09-tmle3shift.R rename to R_code/09-tmle3shift.R index 1c94cea..b2ec9aa 100644 --- a/R/09-tmle3shift.R +++ b/R_code/09-tmle3shift.R @@ -169,4 +169,3 @@ learner_list <- list(Y = sl_reg_lrnr, A = cv_hose_hal_lrnr) ## ----fit_tmle_wrapper_washb_shift, message=FALSE, warning=FALSE, eval=FALSE---- ## washb_tmle_fit <- tmle3(washb_vim_spec, washb_data, node_list, learner_list) ## washb_tmle_fit - diff --git a/R_code/10-tmle3mediate.R b/R_code/10-tmle3mediate.R new file mode 100644 index 0000000..e69de29 diff --git a/R/11-tmle3survival.R b/R_code/11-tmle3survival.R similarity index 64% rename from R/11-tmle3survival.R rename to R_code/11-tmle3survival.R index 9291a98..d2cdcac 100644 --- a/R/11-tmle3survival.R +++ b/R_code/11-tmle3survival.R @@ -5,25 +5,33 @@ library(sl3) ## ----------------------------------------------------------------------------- vet_data <- read.csv( - paste0("https://raw.githubusercontent.com/tlverse/deming2019-workshop/", - "master/data/veteran.csv") + paste0( + "https://raw.githubusercontent.com/tlverse/deming2019-workshop/", + "master/data/veteran.csv" + ) ) vet_data$trt <- vet_data$trt - 1 # make fewer times for illustration vet_data$time <- ceiling(vet_data$time / 20) -k_grid <- seq_len(:max(vet_data$time)) +k_grid <- seq_len(max(vet_data$time)) head(vet_data) ## ----------------------------------------------------------------------------- -var_types <- list(T_tilde = Variable_Type$new("continuous"), - t = Variable_Type$new("continuous"), - Delta = Variable_Type$new("binomial")) -survival_spec <- tmle_survival(treatment_level = 1, control_level = 0, - target_times = intersect(1:10, k_grid), - variable_types = var_types) -node_list <- list(W = c("celltype", "karno", "diagtime", "age", "prior"), - A = "trt", T_tilde = "time", Delta = "status", id ="X") +var_types <- list( + T_tilde = Variable_Type$new("continuous"), + t = Variable_Type$new("continuous"), + Delta = Variable_Type$new("binomial") +) +survival_spec <- tmle_survival( + treatment_level = 1, control_level = 0, + target_times = intersect(1:10, k_grid), + variable_types = var_types +) +node_list <- list( + W = c("celltype", "karno", "diagtime", "age", "prior"), + A = "trt", T_tilde = "time", Delta = "status", id = "X" +) long_data_tuple <- survival_spec$transform_data(vet_data, node_list) df_long <- long_data_tuple$long_data @@ -40,8 +48,10 @@ learner_list <- list(A = sl_A, N = sl_A, A_c = sl_A) ## ----------------------------------------------------------------------------- tmle_task <- survival_spec$make_tmle_task(df_long, long_node_list) -initial_likelihood <- survival_spec$make_initial_likelihood(tmle_task, - learner_list) +initial_likelihood <- survival_spec$make_initial_likelihood( + tmle_task, + learner_list +) ## ----------------------------------------------------------------------------- @@ -52,11 +62,12 @@ up <- tmle3_Update_survival$new( delta_epsilon = 1e-2, fit_method = "l2", use_best = TRUE, - verbose=FALSE + verbose = FALSE ) targeted_likelihood <- Targeted_Likelihood$new(initial_likelihood, - updater = up) + updater = up +) tmle_params <- survival_spec$make_params(tmle_task, targeted_likelihood) tmle_fit_manual <- fit_tmle3( tmle_task, targeted_likelihood, tmle_params, @@ -66,4 +77,3 @@ tmle_fit_manual <- fit_tmle3( ## ----------------------------------------------------------------------------- print(tmle_fit_manual) - diff --git a/R_code/99-primer_R6.R b/R_code/99-primer_R6.R new file mode 100644 index 0000000..e69de29 diff --git a/_output.yml b/_output.yml index 957493b..ee068f8 100644 --- a/_output.yml +++ b/_output.yml @@ -20,9 +20,9 @@ bookdown::pdf_book: latex_engine: pdflatex citation_package: natbib includes: - in_header: latex/preamble.tex - before_body: latex/before_body.tex - after_body: latex/after_body.tex + in_header: latex_extras/preamble.tex + before_body: latex_extras/before_body.tex + after_body: latex_extras/after_body.tex keep_tex: yes highlight: tango toc_unnumbered: false diff --git a/inst/WORDLIST b/inst/WORDLIST index a44f0e6..10427e9 100644 --- a/inst/WORDLIST +++ b/inst/WORDLIST @@ -1,6 +1,8 @@ Acyclic +AirPassenger analytics argmin +arima asprin ATEs aut @@ -8,33 +10,51 @@ ba Beneifits Benkeser berkeley +biom +Biometrics biostatistics Biostatistics bookdown +Breiman's +bs bslib BugReports +Cai cdot +celltype CHS +CMD +config Coursera cph CPP cre +css dagitty de der +dev +diagtime +dir +doi downlit dplyr edu ensembling estimand estimands +expit extensibility +filetype frac Freeport +funtion gam +generalizability ggdag ggfortify ggplot +gitbook github glmnet gmail @@ -44,6 +64,8 @@ hal haldensify Hejazi HernĂ¡n +histological +href https hubbard imalenica @@ -52,10 +74,15 @@ IST Ivana jeremyrcoyle kableExtra +karno +Karnofsky +kframe knitr laan Laan ldots +le +li lifecycle macOS Malenica @@ -66,47 +93,69 @@ metalearner metalearning methodologists minimizer +MJ mopttx mvtnorm +natbib nh nhejazi Nima nimahejazi nnls +nodelist NPSEM Oleg +optimality ORCID +overfit pandoc +parallelization Parallelization +pdflatex penalizations polspline +polychotomous +postskip pre prescreening +preskip +pvalidation pvalue rachaelvphillips randomForest RCT +RData readr +repo Reproduciblity +resubstitution rmarkdown +rmd +Rmd roadmap Roadmap RoxygenNote +Rscript Rsolnp rstudio RStudio screener SEM +setminipage skimr sl SL SL's Sofrygin speedglm +speficy stringr +styler SuperFund SuperLearner Suposse +svg +tex ths tibble tidyr @@ -116,10 +165,14 @@ TML tmle TMLE TMLEs +toc +totalleftmargin Translational +trt TSM UC Wickham's +widetilde xgboost XP XQuartz diff --git a/latex/after_body.tex b/latex_extras/after_body.tex similarity index 100% rename from latex/after_body.tex rename to latex_extras/after_body.tex diff --git a/latex/before_body.tex b/latex_extras/before_body.tex similarity index 100% rename from latex/before_body.tex rename to latex_extras/before_body.tex diff --git a/latex/preamble.tex b/latex_extras/preamble.tex similarity index 100% rename from latex/preamble.tex rename to latex_extras/preamble.tex diff --git a/purl.R b/purl.R index 77522c4..e199a9c 100644 --- a/purl.R +++ b/purl.R @@ -3,10 +3,12 @@ library(knitr) library(stringr) # get list of chapters for which to create .R files -chapters <- setdiff(str_subset(dir(), ".Rmd"), - c("index.Rmd", "references.Rmd")) +chapters <- setdiff( + str_subset(dir(), ".Rmd"), + c("index.Rmd", "references.Rmd") +) # create .R files lapply(chapters, function(f) { - purl(f, output = here("R", str_replace(f, ".Rmd", ".R"))) + purl(f, output = here("R_code", str_replace(f, ".Rmd", ".R"))) })