Como encontrar todos os possíveis números inteiros k cuja soma é igual a um determinado número em R
suponha que eu tenha um número inteiron
ek
, Preciso encontrar todas as combinações possíveis dek
números inteiros que somamn
. Eu queria saber como faço para implementar isso de forma eficiente.
agora, o que estou fazendo é super lento, eu crieikth
produto cartesiano de uma sequência de 1 a n. E, em seguida, faça um loop sobre todas as combinações possíveis para verificar se ela satisfaz a soma. Abaixo está o meu código.
obter primeiro produto k 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 é a sequência de 1 a nek é o número inteiro
então faça um loop
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,])
}
}
isso é super lento e eu queria saber se existe alguma maneira mais rápida de implementar isso?