[R-br] Lista brasileira oficial de discussão do programa R

Luiz Paulo Serrano lpserrano em hotmail.com
Qui Jun 24 13:50:36 -03 2021


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?


-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20210624/29b7505f/attachment.html>


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