[R-br] Solução alternativa evitando uso de loop

Paulo Eduardo de Mesquita paulomesquita7 em gmail.com
Ter Maio 28 17:08:36 -03 2019


Prezado(a)s colegas da lista,

Peço a vossa ajuda nessa questão. Embora eu já tenha uma solução, gostaria
de explorar eventuais alternativas que evitem o uso do loop for.

Eu tenho um vetor  de números inteiros v1 com 10 elementos.

Eu preciso de um código que produza um outro vetor numérico v2, também com
10 elementos, em que:
- o valor do primeiro elemento seja igual ao valor do primeiro elemento de
v1;
- o valor do segundo elemento seja igual a soma do primeiro e do segundo
elemento de v1;
- o valor do terceiro elemento seja igual a soma do primeiro, do segundo e
do terceiro elementos de v1;
- todos os demais elementos (do 4o ao 10o) sejam iguais a soma dele e dos
três elementos imediatamente anteriores a ele.

Tentei soluções aplicando as funções da familia apply, mas acaba caindo no
loop.

Eu imagino que seja possível uma solução utilizando a função cumsum ou
alguma variante que restrinja a soma aos últimos 4 elementos e defina uma
regra para a exceção representada pelos 03 primeiros elementos. Qualquer
ajuda nessa implementação é muito benvinda.

Grato pela atenção,

Código:

v1 <- c(1,2,3,4,5,6,7,8,9,10)
v2 <- numeric(length = length(v1))
for (i in seq_along(v1)) {
   v2[i] <- ifelse(i < 2, v1[i],
                   ifelse(i < 3, v1[i - 1] + v1[i],
                     ifelse(i < 4, v1[i - 2] + v1[i - 1] + v1[i], v1[i - 3]
+ v1[i - 2] + v1[i - 1] + v1[i])))
}
v2
data.frame(v1, v2)

-- 
Paulo Eduardo de Mesquita
Disciplina de Infectologia - Faculdade de Medicina  Universidade do Oeste
Paulista Presidente Prudente - São Paulo - Brasil
telefone: 5518 97718261
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20190528/61c2c304/attachment.html>


Mais detalhes sobre a lista de discussão R-br