Boa tarde Paulo Acredito que uma função recursiva utilizando o cumsum() seria uma solução. Algo assim:
f <- function(v) cumsum(v) v1 <- c(1,2,3,4,5,6,7,8,9,10) f(v1) Saída: [1] 1 3 6 10 15 21 28 36 45 55 daniel Daniel Tiezzi Professor Associado Departamento de Ginecologia e Obstetrícia Setor de Mastologia e Oncologia Ginecológica Faculdade de Medicina de Ribeirão Preto - USP Tel.: 16 3602-2488 e-mail: dtie...@usp.br > On May 28, 2019, at 5:08 PM, Paulo Eduardo de Mesquita por (R-br) > <r-br@listas.c3sl.ufpr.br> wrote: > > 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 > _______________________________________________ > R-br mailing list > R-br@listas.c3sl.ufpr.br > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código > mínimo reproduzível. _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e fornea cdigo mnimo reproduzvel.