Pessoal aqui fiz alguma coisa para passar parte de um código em c++. Para que seja reproduzível deixo o código aqui:<div><br><div><b># Codigo em R</b></div><div><div>library(Rcpp)</div><div>nbur = 10</div><div>nobs = 10</div>

<div>ntot = nbur + nobs</div><div>eboot = rnorm(ntot)</div><div>d = 2</div><div>p = 1</div><div>q= 2</div><div>garchorder = c(p,q)</div><div>aux3 = cumsum(garchorder)</div><div>coeff = c(0.01,0.1,0.7,0.1)</div><div>aux1 = 0.01/(1-0.1-0.7-0.1)</div>

<div><br></div><div>s2_boot = y_boot = c()</div><div>aux2 = sqrt(aux1)</div><div>s2_boot[1:d] = aux1</div><div>y_boot[1:d]=eboot[1:d]*aux2</div><div><br></div><div>for (m in (d+1):ntot){                                                                       </div>

<div>  s2_boot[m] = coeff[1] + sum(coeff[2:(p+1)]*y_boot[m - (1:p)]^2) + sum(coeff[(p+2):(aux3[2]+1)]*s2_boot[m - (1:q)])</div><div>  y_boot[m]=eboot[m]*sqrt(s2_boot[m])</div><div>}</div><div>y_boot</div><div><b><br></b></div>

<div><b><br></b></div><div><b>Utilizando o codigo em C++ consegui que faça a mesma coisa, só que quero saber se os 2 for  que utilizo para obter s1 e s2 </b><b> podem ser subtituidos por outras funções (mais diretas já prontas do C) para não utilizar for.</b></div>

<div><b><br></b></div><div><b>Deixo aqui como faço para chamar utilizando o Rcpp a função em C++</b></div><div>sourceCpp("sbootgarch.cpp")</div><div>teste1 = sbootgarch(d, aux3, aux1, eboot, coeff, p, q)</div></div>

<div><br></div><div># Codigo em C++</div><div><br></div><div><div><div>#include <Rcpp.h></div><div><br></div><div>using namespace Rcpp;</div><div> </div><div>// [[Rcpp::export]]</div><div>NumericVector sbootgarch(int d,  NumericVector aux3, double aux1, NumericVector eboot, NumericVector coeff, int p, int q) {</div>

<div> int ntot = eboot.size();</div><div> NumericVector y_boot(ntot), s2_boot(ntot);</div><div> double s1=0,s2=0,aux2 = sqrt(aux1);</div><div><br></div><div>    for(int n=0; n<d; n++){</div><div>      s2_boot[n] = aux1;</div>

<div>       y_boot[n] = eboot[n]*aux2;</div><div>    }</div><div>    for(int m=d; m<ntot+1; m++){</div><div>      s1 = 0;</div><div>      s2 = 0;</div><div>   <b><font color="#000099">  for(int k=1; k<p+1;k++) s1 += coeff[k]*pow(y_boot[m-k],2);</font></b></div>

<div><b><font color="#000099">     for(int l=1; l<q+1;l++) s2+= coeff[p+l]*s2_boot[m - l];</font></b></div><div>      s2_boot[m] = coeff[0] + s1 +  s2;</div><div>       y_boot[m] = eboot[m]*sqrt(s2_boot[m]);</div><div>

    }</div><div>    return y_boot;</div><div>}</div></div></div><div><br></div><div>Espero possam me ajudar</div><div>Ps: Os for em azul são os que quero saber se podem ser subtituidos por outras funções.</div><div><br clear="all">

<div><p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"></p><blockquote><a name="SafeHtmlFilter_SafeHtmlFilter_SafeHtmlFilter__MailAutoSig"><b><span style="font-size:10.0pt;font-family:"Arial Narrow","sans-serif";color:gray">Carlos Trucíos Maza<br>

</span></b></a><span style="font-size:10.0pt;font-family:Wingdings;color:gray">*</span><span style="font-size:7.0pt;color:gray">    
</span><span style="font-size:10.0pt;font-family:"Arial Narrow","sans-serif";color:gray">: </span><a href="http://ctrucios@gmail.com" target="_blank"><span style="font-size:10.0pt;font-family:"Arial Narrow","sans-serif";color:blue">ctrucios@gmail.com<br>

</span></a><br><font color="#808080" face="'Arial Narrow', sans-serif"><br></font></blockquote>







<p></p></div>
<br></div></div>