
Prezados Cesar e Daniel, bom dia! Antes de mais nada agradeço muito a atenção de vocês. Vou rever o que preconiza a Lista de Discussão. Sds, Luiz Paulo Serrano. ________________________________ De: R-br <r-br-bounces@listas.c3sl.ufpr.br> em nome de Daniel Guimarães Tiezzi por (R-br) <r-br@listas.c3sl.ufpr.br> Enviado: quinta-feira, 24 de junho de 2021 22:26 Para: a lista Brasileira oficial de discussão do programa R. <r-br@listas.c3sl.ufpr.br> Cc: Daniel Guimarães Tiezzi <P> Assunto: Re: [R-br] Lista brasileira oficial de discussão do programa R Cezar Rabak tem razão. Seu post está bem fora do que é preconizado pela Lista de Discussão daniel Em qui., 24 de jun. de 2021 às 13:50, Luiz Paulo Serrano por (R-br) <r-br@listas.c3sl.ufpr.br<mailto:r-br@listas.c3sl.ufpr.br>> escreveu: Prezadas (os) Solicito ajuda para corrigir esse código teoricamente bem simples mas que já tentei e não encontrei o erro. Agradeço desde já a atenção dispensada. Luiz Paulo Serrano. #Função Duplo Loop - Correção do código #A partir de um vetor qualquer #Exemplo para um vetor de 5 elementos (normalmente são mais de 30 elementos) #L1<-c(65.1537,62.0723,63.6386,63.9617,63.9687) n=5 #O que a função desenvolvida está fazendo loopD<-function(A){ n<-length(A) V<-NULL Vc<-NULL for (p in 1:(n-1)){ for(i in 1:(n-p)){ V[i]<-(A[i+p]-A[i])^2/(2*(n-p)) } print(V) Vc[p]<-sum(V)} print(Vc) } loopD(L1) #Saída da função está errada [1] 1.186878245 0.306661961 0.013049201 0.000006125 [1] 0.382588002 0.594972060 0.018161002 0.000006125 [1] 0.355216000 0.899083240 0.018161002 0.000006125 [1] 0.702112500 0.899083240 0.018161002 0.000006125 [1] 1.5065955 0.9957272 1.2724664 1.6193629 #Está fixando quatro parcelas por passo #Passo 1: Ve1 1.186878245+0.306661961+0.013049201+0.000006125 = 1.5065955 - OK quatro parcelas - OK #Passo 2: Ve2 0.382588002+0.594972060+0.018161002+0.000006125 = 0.9957272 - Não OK #quatro parcelas - Não OK #Valor correto: três parcelas Ve2: 0.382588002+0.594972060+0.018161002 = 0.9957211 #Passo 3: Ve3 0.355216000+0.899083240+0.018161002+0.000006125 = 1.2724664 - Não OK #quatro parcelas - Não OK #Valor correto: duas parcelas 0.355216000+0.899083240 = 1.254299 #Passo 4: Ve4 Ve4: 0.702112500+0.899083240+0.018161002+0.000006125 = 1.6193629 - Não OK quatro parcelas - Não OK #Valor correto: uma parcela 0.702112500 #O que a função deve fazer L1<-c(65.1537,62.0723,63.6386,63.9617,63.9687) n=5 #Passo 1: quatro parcelas Ve1<-((L1[2]-L1[1])^2+(L1[3]-L1[2])^2+(L1[4]-L1[3])^2+ (L1[5]-L1[4])^2)/(2*(n-1));Ve1# 1.506596 Ve1<-(L1[2]-L1[1])^2/(2*(n-1))=1.186878...+(L1[5]-L1[4])^2/(2*(n-1))=6.125e-06 Ve1=1.186878245+0.306661961+0.013049201+0.000006125 = 1.506596 #Passo 2: três parcelas Ve2<-((L1[3]-L1[1])^2+(L1[4]-L1[2])^2+(L1[5]-L1[3])^2)/(2*(n-2));Ve2#0.9957211 Ve2<-(L1[3]-L1[1])^2/(2*(n-2))=0,382588...+(L1[5]-L1[3])^2/(2*(n-2))=0.018161 Ve2= 0.382588002+0.594972060+0.018161002 = 0.9957272 #Passo 3: duas parcelas Ve3<-((L1[4]-L1[1])^2+(L1[5]-L1[2])^2) /(2*(n-3));Ve3# 1.254299 Ve3<-(L1[4]-L1[1])^2 Ve3=0.355216000+0.899083240 = 1.254299 #Passo 4: uma parcela Ve4<-(L1[5]-L1[1])^2/(2*(n-4));Ve4#0.7021125 Como corrigir? _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br<mailto: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. -- Daniel Tiezzi, MD, PhD Breast Disease and Gynecologic Oncology Division Department of Gynecology and Obstetrics University of São Paulo Brazil