<!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>