Is this of any help? You can do it manually or write a function that could take any number of vectors!
NB: there may be a more straightforward way, but this will work.
# vectors
first <- c("apple", "banana", "orange")
second <- c("red", "green", "blue")
third <- c("small", "medium", "large")
# manual
combos <- expand.grid(first, second, third)
combos$all = paste(combos$Var1, combos$Var2, combos$Var3, sep = "_")
combos$all
#> [1] "apple_red_small" "banana_red_small" "orange_red_small"
#> [4] "apple_green_small" "banana_green_small" "orange_green_small"
#> [7] "apple_blue_small" "banana_blue_small" "orange_blue_small"
#> [10] "apple_red_medium" "banana_red_medium" "orange_red_medium"
#> [13] "apple_green_medium" "banana_green_medium" "orange_green_medium"
#> [16] "apple_blue_medium" "banana_blue_medium" "orange_blue_medium"
#> [19] "apple_red_large" "banana_red_large" "orange_red_large"
#> [22] "apple_green_large" "banana_green_large" "orange_green_large"
#> [25] "apple_blue_large" "banana_blue_large" "orange_blue_large"
# write a function?
combine_vectors <- function(...){
combos <- tidyr::crossing(...)
united <- tidyr::unite(combos, col = "all", names(combos))
dplyr::pull(united)
}
combine_vectors(first, third)
#> [1] "apple_large" "apple_medium" "apple_small" "banana_large"
#> [5] "banana_medium" "banana_small" "orange_large" "orange_medium"
#> [9] "orange_small"
combine_vectors(first, second)
#> [1] "apple_blue" "apple_green" "apple_red" "banana_blue" "banana_green"
#> [6] "banana_red" "orange_blue" "orange_green" "orange_red"
combine_vectors(first, second, third)
#> [1] "apple_blue_large" "apple_blue_medium" "apple_blue_small"
#> [4] "apple_green_large" "apple_green_medium" "apple_green_small"
#> [7] "apple_red_large" "apple_red_medium" "apple_red_small"
#> [10] "banana_blue_large" "banana_blue_medium" "banana_blue_small"
#> [13] "banana_green_large" "banana_green_medium" "banana_green_small"
#> [16] "banana_red_large" "banana_red_medium" "banana_red_small"
#> [19] "orange_blue_large" "orange_blue_medium" "orange_blue_small"
#> [22] "orange_green_large" "orange_green_medium" "orange_green_small"
#> [25] "orange_red_large" "orange_red_medium" "orange_red_small"
Created on 2022-04-21 by the reprex package (v2.0.1)