Как найти все возможные k целых чисел, сумма которых равна некоторому числу в R

предположим, у меня есть целое числоn а такжеkМне нужно найти все возможные комбинацииk целые числа, которые в суммеn, Мне было интересно, как я могу реализовать это эффективно.

сейчас то, что я делаю, очень медленно, я создалkth декартово произведение последовательности от 1 до n. А затем переберите все возможные комбинации, чтобы проверить, удовлетворяет ли она сумме. Ниже приведен мой код.

сначала получить k декартово произведение

cart = function(v,k){
  x = v
  f = v
  for(i in 1:(k-1)){
    f = merge(f,x,all=T)
    f = as.matrix(f)
    colnames(f) = NULL
  }
  return(f)
}

v - последовательность от 1 до n, а k - целое число.

затем зациклиться

combine = cart(v=seq(1,n),k=k)
sum = 0
for(i in 1:dim(combine)[1]){
  if(sum(combine[i,])==n){
    sum = sum + sum(combine[i,])
  }
}

это очень медленно, и мне было интересно, есть ли более быстрый способ реализовать это?

Ответы на вопрос(2)

Ваш ответ на вопрос