Created
October 18, 2023 09:55
-
-
Save ATpoint/89343ffa2bee975e2eab5982119ac413 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#' Create unique combinations | |
#' | |
#' To a given vector of numeric values add or subtract a constant value, | |
#' and return all possible combinations of that as a matrix | |
#' | |
#' @param values a vector with numeri values | |
#' @param change_value a numeric value too add or subtract | |
#' | |
#' @details | |
#' There are 2^length(values) possible combinations | |
#' | |
#' @examples | |
#' generate_combinations(c(1,2,3), .1) | |
#' | |
generate_combinations <- function(values, change_value = 0.1) { | |
if(!is.numeric(values)) stop("values must be a numeric vector") | |
if(!is.numeric(change_value)) stop("change_value must be numeric") | |
all_changes <- c(change_value, -change_value) | |
combinations <- expand.grid(rep(list(all_changes), length(values))) | |
vectorized <- as.numeric(t(combinations)) + values | |
final <- matrix(vectorized, byrow=TRUE, ncol=length(values)) | |
return(final) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment