Wie finde ich alle möglichen k ganzen Zahlen, deren Summe einer bestimmten Zahl in R @ entsprich

Angenommen, ich habe eine ganze Zahln undk, Ich muss alle möglichen Kombinationen von @ findk ganze Zahlen, die sich zu @ summiern. Ich habe mich gefragt, wie ich das effizient umsetzen kann.

right now, was ich tue, ist super langsam, ich habe @ erstelkth kartesisches Produkt einer Sequenz von 1 bis n. Und dann alle möglichen Kombinationen durchlaufen, um zu prüfen, ob sie die Summe erfüllen. Unten ist mein Code.

erhalten zuerst k kartesisches Produkt

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 ist die Folge von 1 bis n und k ist die ganze Zahl

then Schleife über

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,])
  }
}

dies ist super langsam und ich habe mich gefragt, gibt es eine schnellere Möglichkeit, dies zu implementieren?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage