# Functions (currently) for working with formula objects
#' Update clinical formula
#' @param biomarker_matrix biomarker data in wide format, as data.frame
#' @param formula given formula for association between clinical & outcome data
#' @param biomarker_placeholder string within clinical_subformula representing biomarkers
#' @param id name of id column
#' @return revised formula object
update_formula <- function(biomarker_matrix,
                           formula,
                           biomarker_placeholder = '__BIOM',
                           id) {
  biomarker_subformula <- get_biomarker_subformula(biomarker_matrix = biomarker_matrix,
                                                   id = id)
  revised_formula <- update_clinical_formula(biomarker_subformula = biomarker_subformula,
                                             clinical_formula = formula,
                                             biomarker_placeholder = biomarker_placeholder
                                             )
  revised_formula
}
#' Update clinical formula
#' @param biomarker_subformula subformula prepared for biomarker association
#' @param clinical_formula given formula for association between clinical & outcome data
#' @param biomarker_placeholder string within clinical_subformula representing biomarkers
#' @return revised formula object
update_clinical_formula <- function(biomarker_subformula,
                                    clinical_formula,
                                    biomarker_placeholder = '__BIOM') {
  str_formula <- stringr::str_c(
    as.character(clinical_formula)[2],
    as.character(clinical_formula)[3],
    sep = as.character(clinical_formula)[1])
  str_formula <- gsub(str_formula,
                      pattern = stringr::str_c('`',biomarker_placeholder, '`'),
                      replacement = biomarker_subformula)
  as.formula(str_formula)
}
#' Get biomarker subformula
#' @param biomarker_matrix biomarker data in wide format, as data.frame
#' @param id name of id column in biomarker_matrix
#' @return string representing biomarker-specific portion of formula
get_biomarker_subformula <- function(biomarker_matrix,
                                id) {
  biomarker_names <- colnames(biomarker_matrix)
  biomarker_names <- biomarker_names[biomarker_names != id]
  biomarker_subformula <- stringr::str_c('`',
                                    stringr::str_c(biomarker_names,
                                                   collapse = '` + `'),
                                    '`')
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.