Я хочу написать сценарий R, который сгенерирует все возможные комбинации номеров коллекции, для которых сумма их продуктов меньше определенной суммы.
Например, у меня есть эти два вектора, x
представляющие элементы, для которых я хочу сгенерировать комбинации, y
представляющие элементы, чтобы найти сумму продукта.
x <- c(2,4,6) #elements to find combinations
y <- c(24,48,72) #elements to find product sum
Мое основное ограничение здесь заключается в том, что общая сумма произведений любой комбинации x
должна быть меньше или равна 1244.
Пример желаемого результата
|--------------|--------------|--------------|---------------------|
| Total of 2 | Total of 4 | Total of 6 | Total Product Sum |
|--------------|--------------|--------------|---------------------|
| 1 | 1 | 1 | 144 |
|--------------|--------------|--------------|---------------------|
| 2 | 2 | 2 | 288 |
|--------------|--------------|--------------|---------------------|
| 3 | 3 | 3 | 432 |
|--------------|--------------|--------------|---------------------|
| 4 | 4 | 4 | 576 |
|--------------|--------------|--------------|---------------------|
| 5 | 5 | 5 | 720 |
|--------------|--------------|--------------|---------------------|
| ... | ... | ... | ... |
|--------------|--------------|--------------|---------------------|
Пример кода в R
Я пробовал использовать следующий код, но он работает только линейно вместо генерации всех возможных комбинаций, которые меньше или равны 1244.
n_trials <- 30
# data frame to store all possible combinations and their product sum
combo_data <- data.frame(total_of_2 = rep(0,n_trials)
, total_of_4 = rep(0,n_trials)
, total_of_6 = rep(0,n_trials)
, total_product_sum = rep(0,n_trials))
for (i in 1:n_trials) {
# check that combination is at most 1244 sqft
if (i*24 + i*48 + i*72 <= 1244) {
# track number of each element in x
combo_data$total_of_2[i] <- i
combo_data$total_of_4[i] <- i
combo_data$total_of_6[i] <- i
# add total product sum
combo_data$total_product_sum[i] <- i*24 + i*48 + i*72
}
}
view(combo_data)