Cómo encontrar todos los k enteros posibles cuya suma de ellos es igual a un cierto número en R
supongamos que tengo un número enteron
yk
, Necesito encontrar todas las combinaciones posibles dek
enteros que sumann
. Me preguntaba cómo puedo implementar esto de manera eficiente.
en este momento, lo que estoy haciendo es muy lento, creékth
producto cartesiano de una secuencia de 1 a n. Y luego repita todas las combinaciones posibles para verificar si cumple con la suma. A continuación está mi código.
primero obtenga k producto cartesiano
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 es la secuencia de 1 a n y k es el entero
luego repite
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,])
}
}
esto es súper lento y me preguntaba si hay alguna forma más rápida de implementar esto.