<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.23532">
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2 face=Arial></FONT><FONT face=Arial>Como eu faço para rodar 
este código? Veja a mensagem que recebi:</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial>Error in sourceCpp(code = code, env = env, rebuild = 
rebuild, showOutput = showOutput,  : <BR>  Error 1 occurred building 
shared library.</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial>WARNING: The tools required to build C++ code for R were 
not found.</FONT></DIV>
<DIV><FONT face=Arial></FONT> </DIV>
<DIV><FONT face=Arial>Please download and install the appropriate version of 
Rtools:</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial><A 
href="http://cran.r-project.org/bin/windows/Rtools/">http://cran.r-project.org/bin/windows/Rtools/</A></FONT><BR></DIV>
<BLOCKQUOTE 
style="BORDER-LEFT: #000000 2px solid; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px">
  <DIV dir=ltr>Ola pessoal.
  <DIV><BR></DIV>
  <DIV>Eu estou com uma dificuldade em como fazer uma chamada recursiva usando o 
  Rcpp.</DIV>
  <DIV><BR></DIV>
  <DIV>Por curiosidade, eu estava fazendo alguns códigos aqui usando o Rcpp, só 
  por experiencia.</DIV>
  <DIV>Ai eu estava implementando o código para o insertion sort  (<A 
  href="http://pt.wikipedia.org/wiki/Insertion_sort">http://pt.wikipedia.org/wiki/Insertion_sort</A>)</DIV>
  <DIV><BR></DIV>
  <DIV>Minha duvida é a seguinte:</DIV>
  <DIV><BR></DIV>
  <DIV>#Suponha que eu tenho um vetor qualquer:</DIV>
  <DIV><BR></DIV>
  <DIV>
  <DIV>vetor<-sample(100)</DIV>
  <DIV>vetor</DIV></DIV>
  <DIV><BR></DIV>
  <DIV>#Iterativamente, eu fiz um código para usar com o Rcpp assim:</DIV>
  <DIV><BR></DIV>
  <DIV>
  <DIV>library(Rcpp)</DIV>
  <DIV><BR></DIV>
  <DIV>cppFunction("</DIV>
  <DIV>    NumericVector insertionsortC(NumericVector vetor) {</DIV>
  <DIV>        int n = vetor.size();</DIV>
  <DIV><BR></DIV>
  <DIV>        double aux;</DIV>
  <DIV>        int i , j;</DIV>
  <DIV><BR></DIV>
  <DIV>        for(i=1;i<n;i++) {</DIV>
  <DIV>            aux=vetor[i];</DIV>
  <DIV>            j=i-1;</DIV>
  <DIV>            while(j>=0 && 
  vetor[j]>aux) {</DIV>
  <DIV>                
  vetor[j+1]=vetor[j];</DIV>
  <DIV>                j=j-1;</DIV>
  <DIV>                }</DIV>
  <DIV>            vetor[j+1]=aux;</DIV>
  <DIV>            }</DIV>
  <DIV>        return vetor;</DIV>
  <DIV>        }</DIV>
  <DIV>")</DIV></DIV>
  <DIV><BR></DIV>
  <DIV><BR></DIV>
  <DIV>#Funcionou beleza. Ai eu fui tentar repetir a tentativa, 
  recursivamente</DIV>
  <DIV><BR></DIV>
  <DIV>
  <DIV>cppFunction("</DIV>
  <DIV>    NumericVector insertionsortRC(NumericVector vetor, int n) 
  {</DIV>
  <DIV><BR></DIV>
  <DIV>        double aux;</DIV>
  <DIV>        int i;</DIV>
  <DIV><BR></DIV>
  <DIV>        if(n>1) {</DIV>
  <DIV>            
  insertionsortRC(vetor,n-1);</DIV>
  <DIV>            aux=vetor[n-1];</DIV>
  <DIV>            i=n-1;</DIV>
  <DIV>            while(vetor[i-1]>aux 
  && i>=0 ) {</DIV>
  <DIV>                
  vetor[i]=vetor[i-1];</DIV>
  <DIV>                i--;</DIV>
  <DIV>                }</DIV>
  <DIV>            vetor[i]=aux;</DIV>
  <DIV>            }</DIV>
  <DIV><BR></DIV>
  <DIV>        return vetor;</DIV>
  <DIV>        }</DIV>
  <DIV>    ")</DIV></DIV>
  <DIV><BR></DIV>
  <DIV>#E assim funcionou blz, mas eu tive que começar a mandar o argumento 
  n, </DIV>
  <DIV>#que é o tamanho do vetor</DIV>
  <DIV><BR></DIV>
  <DIV>#o que eu queria é fazer algo aqui, na chamada recursiva</DIV>
  <DIV><BR></DIV>
  <DIV>#insertionsortRC(vetor,n-1);<BR></DIV>
  <DIV><BR></DIV>
  <DIV>#sei la, se eu conseguir tirar o ultimo elemento, eu posso suprimir esse 
  n-1</DIV>
  <DIV>#Eu não entendo de Rcpp e C++ muito bem.</DIV>
  <DIV>#Mas tem uma forma simples de mudar o tamanho do vetor, ou arrancar o 
  ultimo elemento dele</DIV>
  <DIV>#algo tipo vetor.pop()</DIV>
  <DIV><BR></DIV>
  <DIV>#pra fazer a chamada ficar tipo</DIV>
  <DIV>#vetor.pop();<BR></DIV>
  <DIV>#insertionsortRC(vetor);<BR></DIV>
  <DIV>#que ai no inicio da chamada eu uso o int n = vetor.size(); igual ao 
  formato iterativo.<BR></DIV>
  <DIV>#Bem, espero não estar sendo muito confuso na pergunta e que a função 
  funcione.</DIV>
  <DIV>#Mas imagino que deve ser super simples isso.</DIV>
  <DIV><BR></DIV>
  <DIV>Agradeço a atenção desde ja :)</DIV>
  <DIV>
  <DIV><BR></DIV>-- <BR>
  <DIV dir=ltr>
  <DIV>Grato<BR>Augusto C. A. Ribas</DIV>
  <DIV> </DIV>
  <DIV>Site Pessoal: <A href="http://recologia.com.br/" 
  target=_blank>http://recologia.com.br/</A><A 
  href="http://augustoribas.heliohost.org" target=_blank></A></DIV>
  <DIV>Github: <A href="https://github.com/Squiercg" 
  target=_blank>https://github.com/Squiercg</A></DIV>
  <DIV>Lattes: <A href="http://lattes.cnpq.br/7355685961127056" 
  target=_blank>http://lattes.cnpq.br/7355685961127056</A><BR></DIV></DIV></DIV></DIV>
  <P>
  <P><FONT size=2 face=Arial></FONT></P></BLOCKQUOTE></BODY></HTML>