#' @title Proportion Folds
#'
#' @export
proportion_folds <- function(vec, folds) {
  # Proportion the split by counting class type
  classCounts <- vec %>% table
  # Get names
  cNames <- classCounts %>% names
  # Convert to numeric
  classCounts %<>% as.numeric
  # Get remainder modulo folds
  remainders <- classCounts %% folds
  # Get integer counts
  intCounts <- classCounts %/% folds
  myCounts <- lapply(
    X = 1:(cNames %>% length),
    FUN = function(x) {
      c(intCounts[x] %>% rep(folds - remainders[x]), intCounts[x] %>% `+`(1) %>% rep(remainders[x]))
    }
  )
  cTypes <- lapply(
    X = cNames,
    FUN = function(x) vec %>% `==`(x) %>% which
  )
  names(cTypes) <- cNames
  
  allFolds <- c()
  for (i in 1:folds) {
    singleCounts <- myCounts %>%
      purrr::map(i) %>%
      as.integer
    # Initialise allIndexes
    allIndexes <- c()
    # Loop over each type
    for (j in 1:(cNames %>% length)) {
      # Sample it
      indexes <- cTypes[[j]] %>% sample(size = singleCounts[j])
      # Then take the set difference
      cTypes[[j]] %<>% setdiff(indexes)
      # Combine all indexes together
      allIndexes %<>% c(indexes)
    }
    allFolds %<>% c(allIndexes %>% list)
  }
  # Append names
  names(allFolds) <- paste0("Fold", append_zeros(folds))
  # Return list back
  return(allFolds %>% lapply(sort))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.