сумма подмножества в R

Я хотел бы иметь алгоритм (в r), который предоставляет мне ВСЕ возможные комбинации целых чисел, которые в сумме дают определенную сумму. Желательно в data.frame.

Например:

subsets(4,3) должен дать мне все комбинации из 3 элементов, которые в сумме дают 4:

 0,0,4
 0,4,0
 4,0,0
 1,0,3
 1,3,0
 3,0,1
 3,1,0
 0,1,3
 0,3,1
 1,1,2
 1,2,1
 2,1,1
 2,2,0
 0,2,2 
 2,0,2

Моя сумма будет не более 50, а мои группы зафиксированы на 6 (где разрешено 0).

subsetsum() не является ответом на мою проблему, к сожалению. Может кто-нибудь мне помочь?


person dsent    schedule 28.06.2017    source источник
comment
что еще вы пробовали до сих пор? Пакет partitions предоставит вам все (неупорядоченные) наборы неотрицательных целых чисел, которые в сумме составляют указанную сумму. Оттуда вы можете выбрать те, у которых максимальное количество ненулевых элементов, и вычислить нужные вам перестановки. Однако для 50/6 у вас будет много элементов; pp <- part(50) дает вам матрицу разделов, sum(colSums(pp>0)<=6) говорит вам, что 9192 из них имеют ‹=6 ненулевых компонентов; умножьте это на factorial(6) (все перестановки), и вы получите 6618240 наборов.   -  person Ben Bolker    schedule 29.06.2017
comment
надеюсь, что эта ссылка поможет stackoverflow.com/questions/22218640/   -  person BENY    schedule 29.06.2017
comment
Связанный с этим вопрос: -certain-nu/38082278">здесь.   -  person lmo    schedule 29.06.2017
comment
Спасибо @Imo. Спасибо, именно то, что я искал!   -  person dsent    schedule 04.07.2017