Duvida rcpp, como remover um elemento de um vetor no código C++
Ola pessoal. Eu estou com uma dificuldade em como fazer uma chamada recursiva usando o Rcpp. Por curiosidade, eu estava fazendo alguns códigos aqui usando o Rcpp, só por experiencia. Ai eu estava implementando o código para o insertion sort ( http://pt.wikipedia.org/wiki/Insertion_sort) Minha duvida é a seguinte: #Suponha que eu tenho um vetor qualquer: vetor<-sample(100) vetor #Iterativamente, eu fiz um código para usar com o Rcpp assim: library(Rcpp) cppFunction(" NumericVector insertionsortC(NumericVector vetor) { int n = vetor.size(); double aux; int i , j; for(i=1;i<n;i++) { aux=vetor[i]; j=i-1; while(j>=0 && vetor[j]>aux) { vetor[j+1]=vetor[j]; j=j-1; } vetor[j+1]=aux; } return vetor; } ") #Funcionou beleza. Ai eu fui tentar repetir a tentativa, recursivamente cppFunction(" NumericVector insertionsortRC(NumericVector vetor, int n) { double aux; int i; if(n>1) { insertionsortRC(vetor,n-1); aux=vetor[n-1]; i=n-1; while(vetor[i-1]>aux && i>=0 ) { vetor[i]=vetor[i-1]; i--; } vetor[i]=aux; } return vetor; } ") #E assim funcionou blz, mas eu tive que começar a mandar o argumento n, #que é o tamanho do vetor #o que eu queria é fazer algo aqui, na chamada recursiva #insertionsortRC(vetor,n-1); #sei la, se eu conseguir tirar o ultimo elemento, eu posso suprimir esse n-1 #Eu não entendo de Rcpp e C++ muito bem. #Mas tem uma forma simples de mudar o tamanho do vetor, ou arrancar o ultimo elemento dele #algo tipo vetor.pop() #pra fazer a chamada ficar tipo #vetor.pop(); #insertionsortRC(vetor); #que ai no inicio da chamada eu uso o int n = vetor.size(); igual ao formato iterativo. #Bem, espero não estar sendo muito confuso na pergunta e que a função funcione. #Mas imagino que deve ser super simples isso. Agradeço a atenção desde ja :) -- Grato Augusto C. A. Ribas Site Pessoal: http://recologia.com.br/ <http://augustoribas.heliohost.org> Github: https://github.com/Squiercg Lattes: http://lattes.cnpq.br/7355685961127056
Como eu faço para rodar este código? Veja a mensagem que recebi: Error in sourceCpp(code = code, env = env, rebuild = rebuild, showOutput = showOutput, : Error 1 occurred building shared library. WARNING: The tools required to build C++ code for R were not found. Please download and install the appropriate version of Rtools: http://cran.r-project.org/bin/windows/Rtools/ Ola pessoal. Eu estou com uma dificuldade em como fazer uma chamada recursiva usando o Rcpp. Por curiosidade, eu estava fazendo alguns códigos aqui usando o Rcpp, só por experiencia. Ai eu estava implementando o código para o insertion sort (http://pt.wikipedia.org/wiki/Insertion_sort) Minha duvida é a seguinte: #Suponha que eu tenho um vetor qualquer: vetor<-sample(100) vetor #Iterativamente, eu fiz um código para usar com o Rcpp assim: library(Rcpp) cppFunction(" NumericVector insertionsortC(NumericVector vetor) { int n = vetor.size(); double aux; int i , j; for(i=1;i<n;i++) { aux=vetor[i]; j=i-1; while(j>=0 && vetor[j]>aux) { vetor[j+1]=vetor[j]; j=j-1; } vetor[j+1]=aux; } return vetor; } ") #Funcionou beleza. Ai eu fui tentar repetir a tentativa, recursivamente cppFunction(" NumericVector insertionsortRC(NumericVector vetor, int n) { double aux; int i; if(n>1) { insertionsortRC(vetor,n-1); aux=vetor[n-1]; i=n-1; while(vetor[i-1]>aux && i>=0 ) { vetor[i]=vetor[i-1]; i--; } vetor[i]=aux; } return vetor; } ") #E assim funcionou blz, mas eu tive que começar a mandar o argumento n, #que é o tamanho do vetor #o que eu queria é fazer algo aqui, na chamada recursiva #insertionsortRC(vetor,n-1); #sei la, se eu conseguir tirar o ultimo elemento, eu posso suprimir esse n-1 #Eu não entendo de Rcpp e C++ muito bem. #Mas tem uma forma simples de mudar o tamanho do vetor, ou arrancar o ultimo elemento dele #algo tipo vetor.pop() #pra fazer a chamada ficar tipo #vetor.pop(); #insertionsortRC(vetor); #que ai no inicio da chamada eu uso o int n = vetor.size(); igual ao formato iterativo. #Bem, espero não estar sendo muito confuso na pergunta e que a função funcione. #Mas imagino que deve ser super simples isso. Agradeço a atenção desde ja :) -- Grato Augusto C. A. Ribas Site Pessoal: http://recologia.com.br/ Github: https://github.com/Squiercg Lattes: http://lattes.cnpq.br/7355685961127056
vetor.erase(n)? On Oct 17, 2013 4:39 PM, "Augusto Ribas" <ribas.aca@gmail.com> wrote:
Ola pessoal.
Eu estou com uma dificuldade em como fazer uma chamada recursiva usando o Rcpp.
Por curiosidade, eu estava fazendo alguns códigos aqui usando o Rcpp, só por experiencia. Ai eu estava implementando o código para o insertion sort ( http://pt.wikipedia.org/wiki/Insertion_sort)
Minha duvida é a seguinte:
#Suponha que eu tenho um vetor qualquer:
vetor<-sample(100) vetor
#Iterativamente, eu fiz um código para usar com o Rcpp assim:
library(Rcpp)
cppFunction(" NumericVector insertionsortC(NumericVector vetor) { int n = vetor.size();
double aux; int i , j;
for(i=1;i<n;i++) { aux=vetor[i]; j=i-1; while(j>=0 && vetor[j]>aux) { vetor[j+1]=vetor[j]; j=j-1; } vetor[j+1]=aux; } return vetor; } ")
#Funcionou beleza. Ai eu fui tentar repetir a tentativa, recursivamente
cppFunction(" NumericVector insertionsortRC(NumericVector vetor, int n) {
double aux; int i;
if(n>1) { insertionsortRC(vetor,n-1); aux=vetor[n-1]; i=n-1; while(vetor[i-1]>aux && i>=0 ) { vetor[i]=vetor[i-1]; i--; } vetor[i]=aux; }
return vetor; } ")
#E assim funcionou blz, mas eu tive que começar a mandar o argumento n, #que é o tamanho do vetor
#o que eu queria é fazer algo aqui, na chamada recursiva
#insertionsortRC(vetor,n-1);
#sei la, se eu conseguir tirar o ultimo elemento, eu posso suprimir esse n-1 #Eu não entendo de Rcpp e C++ muito bem. #Mas tem uma forma simples de mudar o tamanho do vetor, ou arrancar o ultimo elemento dele #algo tipo vetor.pop()
#pra fazer a chamada ficar tipo #vetor.pop(); #insertionsortRC(vetor); #que ai no inicio da chamada eu uso o int n = vetor.size(); igual ao formato iterativo. #Bem, espero não estar sendo muito confuso na pergunta e que a função funcione. #Mas imagino que deve ser super simples isso.
Agradeço a atenção desde ja :)
-- Grato Augusto C. A. Ribas
Site Pessoal: http://recologia.com.br/ <http://augustoribas.heliohost.org> Github: https://github.com/Squiercg Lattes: http://lattes.cnpq.br/7355685961127056
_______________________________________________ R-br mailing list 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.
@Mauro Sznelwar
Qual sistema operacional você esta usando?
Parece que o erro tem haver de estar faltando alguma coisa, o compilador de
c++?
Eu uso o ubunto aqui, e ja veio junto o compilador, o compilador está
instalado ae certinho?
Na verdade eu não entendo muito bem de rcpp, estou apenas testando, mas
talvez seja algo nesse sentido o erro ae. Aqui funciona normal o codigo.
E o vetor.erase(n) não funcionou :(
Quando eu tentei assim, deu uma msg de erro:
library(Rcpp)
vetor<-sample(100)
> cppFunction("
+ NumericVector insertionsortRC(NumericVector vetor) {
+ int n = vetor.size();
+ double aux;
+ int i;
+ if(n>1) {
+ vetor.erase(n);
+ insertionsortRC(vetor);
+ aux=vetor[n-1];
+ i=n-1;
+ while(vetor[i-1]>aux && i>=0 ) {
+ vetor[i]=vetor[i-1];
+ i--;
+ }
+ vetor[i]=aux;
+ }
+ return vetor;
+ }
+ ")
> insertionsortRC(vetor)
*** Error in `/usr/lib/R/bin/exec/R': malloc(): memory corruption:
0x098db548 ***
Ai eu pensei se tinha algo haver com o indice, ai tentei com n-1, assim no
vetor.erase(n-1)
> vetor
[1] 33 31 86 25 70 40 88 81 13 85 87 39 60 64 10 82 89
14 66 36 15 96 26
[24] 4 54 29 83 55 68 91 6 100 51 7 53 99 65 23 94 57
90 32 47 16 50 28
[47] 3 98 11 18 76 63 77 74 49 8 97 12 27 35 79 80 20
67 93 5 56 9 37
[70] 24 92 69 38 44 17 46 43 34 19 2 95 72 1 61 41 62
22 42 21 84 48 78
[93] 73 30 59 58 52 75 71 45
> insertionsortRC(vetor)
[1] 3.607393e-313 3.300000e+01 3.100000e+01 8.600000e+01 2.500000e+01
7.000000e+01
[7] 4.000000e+01 8.800000e+01 8.100000e+01 1.300000e+01 8.500000e+01
8.700000e+01
[13] 3.900000e+01 6.000000e+01 6.400000e+01 1.000000e+01 8.200000e+01
8.900000e+01
[19] 1.400000e+01 6.600000e+01 3.600000e+01 1.500000e+01 9.600000e+01
2.600000e+01
[25] 4.000000e+00 5.400000e+01 2.900000e+01 8.300000e+01 5.500000e+01
6.800000e+01
[31] 9.100000e+01 6.000000e+00 1.000000e+02 5.100000e+01 7.000000e+00
5.300000e+01
[37] 9.900000e+01 6.500000e+01 2.300000e+01 9.400000e+01 5.700000e+01
9.000000e+01
[43] 3.200000e+01 4.700000e+01 1.600000e+01 5.000000e+01 2.800000e+01
3.000000e+00
[49] 9.800000e+01 1.100000e+01 1.800000e+01 7.600000e+01 6.300000e+01
7.700000e+01
[55] 7.400000e+01 4.900000e+01 8.000000e+00 9.700000e+01 1.200000e+01
2.700000e+01
[61] 3.500000e+01 7.900000e+01 8.000000e+01 2.000000e+01 6.700000e+01
9.300000e+01
[67] 5.000000e+00 5.600000e+01 9.000000e+00 3.700000e+01 2.400000e+01
9.200000e+01
[73] 6.900000e+01 3.800000e+01 4.400000e+01 1.700000e+01 4.600000e+01
4.300000e+01
[79] 3.400000e+01 1.900000e+01 2.000000e+00 9.500000e+01 7.200000e+01
1.000000e+00
[85] 6.100000e+01 4.100000e+01 6.200000e+01 2.200000e+01 4.200000e+01
2.100000e+01
[91] 8.400000e+01 4.800000e+01 7.800000e+01 7.300000e+01 3.000000e+01
5.900000e+01
[97] 5.800000e+01 5.200000e+01 7.500000e+01
>
Ai não funcionou. Mandando o vetor e o n junto, tudo funcionava, então acho
que estou realizando alguma operação errada na chamada recursiva ali.
Olhando a descrição do comando aqui:
http://www.cplusplus.com/reference/vector/vector/erase/
Ele diz que apaga da memoria o valor, então imagino que talvez esteja dando
problema na volta da recursão. Acho que não é tão simples usar Rcpp quanto
imaginava.
Quando no primeiro caso la ele diz "memory corruption: 0x098db548", esse é
o endereço de memoria que eu usei errado não é?
Em 19 de outubro de 2013 01:35, Benilton Carvalho <
beniltoncarvalho@gmail.com> escreveu:
> vetor.erase(n)?
> On Oct 17, 2013 4:39 PM, "Augusto Ribas" <ribas.aca@gmail.com> wrote:
>
>> Ola pessoal.
>>
>> Eu estou com uma dificuldade em como fazer uma chamada recursiva usando o
>> Rcpp.
>>
>> Por curiosidade, eu estava fazendo alguns códigos aqui usando o Rcpp, só
>> por experiencia.
>> Ai eu estava implementando o código para o insertion sort (
>> http://pt.wikipedia.org/wiki/Insertion_sort)
>>
>> Minha duvida é a seguinte:
>>
>> #Suponha que eu tenho um vetor qualquer:
>>
>> vetor<-sample(100)
>> vetor
>>
>> #Iterativamente, eu fiz um código para usar com o Rcpp assim:
>>
>> library(Rcpp)
>>
>> cppFunction("
>> NumericVector insertionsortC(NumericVector vetor) {
>> int n = vetor.size();
>>
>> double aux;
>> int i , j;
>>
>> for(i=1;i<n;i++) {
>> aux=vetor[i];
>> j=i-1;
>> while(j>=0 && vetor[j]>aux) {
>> vetor[j+1]=vetor[j];
>> j=j-1;
>> }
>> vetor[j+1]=aux;
>> }
>> return vetor;
>> }
>> ")
>>
>>
>> #Funcionou beleza. Ai eu fui tentar repetir a tentativa, recursivamente
>>
>> cppFunction("
>> NumericVector insertionsortRC(NumericVector vetor, int n) {
>>
>> double aux;
>> int i;
>>
>> if(n>1) {
>> insertionsortRC(vetor,n-1);
>> aux=vetor[n-1];
>> i=n-1;
>> while(vetor[i-1]>aux && i>=0 ) {
>> vetor[i]=vetor[i-1];
>> i--;
>> }
>> vetor[i]=aux;
>> }
>>
>> return vetor;
>> }
>> ")
>>
>> #E assim funcionou blz, mas eu tive que começar a mandar o argumento n,
>> #que é o tamanho do vetor
>>
>> #o que eu queria é fazer algo aqui, na chamada recursiva
>>
>> #insertionsortRC(vetor,n-1);
>>
>> #sei la, se eu conseguir tirar o ultimo elemento, eu posso suprimir esse
>> n-1
>> #Eu não entendo de Rcpp e C++ muito bem.
>> #Mas tem uma forma simples de mudar o tamanho do vetor, ou arrancar o
>> ultimo elemento dele
>> #algo tipo vetor.pop()
>>
>> #pra fazer a chamada ficar tipo
>> #vetor.pop();
>> #insertionsortRC(vetor);
>> #que ai no inicio da chamada eu uso o int n = vetor.size(); igual ao
>> formato iterativo.
>> #Bem, espero não estar sendo muito confuso na pergunta e que a função
>> funcione.
>> #Mas imagino que deve ser super simples isso.
>>
>> Agradeço a atenção desde ja :)
>>
>> --
>> Grato
>> Augusto C. A. Ribas
>>
>> Site Pessoal: http://recologia.com.br/<http://augustoribas.heliohost.org>
>> Github: https://github.com/Squiercg
>> Lattes: http://lattes.cnpq.br/7355685961127056
>>
>> _______________________________________________
>> R-br mailing list
>> 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.
>>
>
> _______________________________________________
> R-br mailing list
> 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.
>
--
Grato
Augusto C. A. Ribas
Site Pessoal: http://recologia.com.br/ <http://augustoribas.heliohost.org>
Github: https://github.com/Squiercg
Lattes: http://lattes.cnpq.br/7355685961127056
Windows XP
@Mauro Sznelwar
Qual sistema operacional você esta usando?
Parece que o erro tem haver de estar faltando alguma coisa, o compilador de c++?
Eu uso o ubunto aqui, e ja veio junto o compilador, o compilador está instalado ae certinho?
Na verdade eu não entendo muito bem de rcpp, estou apenas testando, mas talvez seja algo nesse sentido o erro ae. Aqui funciona normal o codigo.
E o vetor.erase(n) não funcionou :(
Quando eu tentei assim, deu uma msg de erro:
library(Rcpp)
vetor<-sample(100)
> cppFunction("
+ NumericVector insertionsortRC(NumericVector vetor) {
+ int n = vetor.size();
+ double aux;
+ int i;
+ if(n>1) {
+ vetor.erase(n);
+ insertionsortRC(vetor);
+ aux=vetor[n-1];
+ i=n-1;
+ while(vetor[i-1]>aux && i>=0 ) {
+ vetor[i]=vetor[i-1];
+ i--;
+ }
+ vetor[i]=aux;
+ }
+ return vetor;
+ }
+ ")
> insertionsortRC(vetor)
*** Error in `/usr/lib/R/bin/exec/R': malloc(): memory corruption: 0x098db548 ***
Ai eu pensei se tinha algo haver com o indice, ai tentei com n-1, assim no vetor.erase(n-1)
> vetor
[1] 33 31 86 25 70 40 88 81 13 85 87 39 60 64 10 82 89 14 66 36 15 96 26
[24] 4 54 29 83 55 68 91 6 100 51 7 53 99 65 23 94 57 90 32 47 16 50 28
[47] 3 98 11 18 76 63 77 74 49 8 97 12 27 35 79 80 20 67 93 5 56 9 37
[70] 24 92 69 38 44 17 46 43 34 19 2 95 72 1 61 41 62 22 42 21 84 48 78
[93] 73 30 59 58 52 75 71 45
> insertionsortRC(vetor)
[1] 3.607393e-313 3.300000e+01 3.100000e+01 8.600000e+01 2.500000e+01 7.000000e+01
[7] 4.000000e+01 8.800000e+01 8.100000e+01 1.300000e+01 8.500000e+01 8.700000e+01
[13] 3.900000e+01 6.000000e+01 6.400000e+01 1.000000e+01 8.200000e+01 8.900000e+01
[19] 1.400000e+01 6.600000e+01 3.600000e+01 1.500000e+01 9.600000e+01 2.600000e+01
[25] 4.000000e+00 5.400000e+01 2.900000e+01 8.300000e+01 5.500000e+01 6.800000e+01
[31] 9.100000e+01 6.000000e+00 1.000000e+02 5.100000e+01 7.000000e+00 5.300000e+01
[37] 9.900000e+01 6.500000e+01 2.300000e+01 9.400000e+01 5.700000e+01 9.000000e+01
[43] 3.200000e+01 4.700000e+01 1.600000e+01 5.000000e+01 2.800000e+01 3.000000e+00
[49] 9.800000e+01 1.100000e+01 1.800000e+01 7.600000e+01 6.300000e+01 7.700000e+01
[55] 7.400000e+01 4.900000e+01 8.000000e+00 9.700000e+01 1.200000e+01 2.700000e+01
[61] 3.500000e+01 7.900000e+01 8.000000e+01 2.000000e+01 6.700000e+01 9.300000e+01
[67] 5.000000e+00 5.600000e+01 9.000000e+00 3.700000e+01 2.400000e+01 9.200000e+01
[73] 6.900000e+01 3.800000e+01 4.400000e+01 1.700000e+01 4.600000e+01 4.300000e+01
[79] 3.400000e+01 1.900000e+01 2.000000e+00 9.500000e+01 7.200000e+01 1.000000e+00
[85] 6.100000e+01 4.100000e+01 6.200000e+01 2.200000e+01 4.200000e+01 2.100000e+01
[91] 8.400000e+01 4.800000e+01 7.800000e+01 7.300000e+01 3.000000e+01 5.900000e+01
[97] 5.800000e+01 5.200000e+01 7.500000e+01
>
Ai não funcionou. Mandando o vetor e o n junto, tudo funcionava, então acho que estou realizando alguma operação errada na chamada recursiva ali.
Olhando a descrição do comando aqui:
http://www.cplusplus.com/reference/vector/vector/erase/
Ele diz que apaga da memoria o valor, então imagino que talvez esteja dando problema na volta da recursão. Acho que não é tão simples usar Rcpp quanto imaginava.
Quando no primeiro caso la ele diz "memory corruption: 0x098db548", esse é o endereço de memoria que eu usei errado não é?
Pelo que eu entendo, o Rcpp compila o codigo que você escreve em c++ numa
função, então tem que ter o compilador, no linux ele usa o gcc, agora no
windows não sei, mas imagino que esteja faltando o compilador. De uma
olhada nesse post:
http://www.r-bloggers.com/installing-rcpp-on-windows-7-for-r-and-c-integration/
E em outro forum, fui informado que o problema é o meu codigo mesmo,
imagino que so da para fazer o algoritimo mandando os dois argumentos, o
vetor e o tamanho dele.
http://stackoverflow.com/questions/19472211/how-to-remove-an-element-in-numericvector-for-a-recursion-using-r-and-rcpp
Em 20 de outubro de 2013 20:44, Mauro Sznelwar <sznelwar@uol.com.br>escreveu:
> **
> *Windows XP*
>
> @Mauro Sznelwar
> Qual sistema operacional você esta usando?
> Parece que o erro tem haver de estar faltando alguma coisa, o compilador
> de c++?
> Eu uso o ubunto aqui, e ja veio junto o compilador, o compilador está
> instalado ae certinho?
> Na verdade eu não entendo muito bem de rcpp, estou apenas testando, mas
> talvez seja algo nesse sentido o erro ae. Aqui funciona normal o codigo.
>
>
> E o vetor.erase(n) não funcionou :(
>
> Quando eu tentei assim, deu uma msg de erro:
>
> library(Rcpp)
> vetor<-sample(100)
>
> > cppFunction("
> + NumericVector insertionsortRC(NumericVector vetor) {
> + int n = vetor.size();
> + double aux;
> + int i;
> + if(n>1) {
> + vetor.erase(n);
> + insertionsortRC(vetor);
> + aux=vetor[n-1];
> + i=n-1;
> + while(vetor[i-1]>aux && i>=0 ) {
> + vetor[i]=vetor[i-1];
> + i--;
> + }
> + vetor[i]=aux;
> + }
> + return vetor;
> + }
> + ")
> > insertionsortRC(vetor)
> *** Error in `/usr/lib/R/bin/exec/R': malloc(): memory corruption:
> 0x098db548 ***
>
> Ai eu pensei se tinha algo haver com o indice, ai tentei com n-1, assim no
> vetor.erase(n-1)
>
> > vetor
> [1] 33 31 86 25 70 40 88 81 13 85 87 39 60 64 10 82 89
> 14 66 36 15 96 26
> [24] 4 54 29 83 55 68 91 6 100 51 7 53 99 65 23 94 57
> 90 32 47 16 50 28
> [47] 3 98 11 18 76 63 77 74 49 8 97 12 27 35 79 80 20
> 67 93 5 56 9 37
> [70] 24 92 69 38 44 17 46 43 34 19 2 95 72 1 61 41 62
> 22 42 21 84 48 78
> [93] 73 30 59 58 52 75 71 45
>
> > insertionsortRC(vetor)
> [1] 3.607393e-313 3.300000e+01 3.100000e+01 8.600000e+01 2.500000e+01
> 7.000000e+01
> [7] 4.000000e+01 8.800000e+01 8.100000e+01 1.300000e+01 8.500000e+01
> 8.700000e+01
> [13] 3.900000e+01 6.000000e+01 6.400000e+01 1.000000e+01 8.200000e+01
> 8.900000e+01
> [19] 1.400000e+01 6.600000e+01 3.600000e+01 1.500000e+01 9.600000e+01
> 2.600000e+01
> [25] 4.000000e+00 5.400000e+01 2.900000e+01 8.300000e+01 5.500000e+01
> 6.800000e+01
> [31] 9.100000e+01 6.000000e+00 1.000000e+02 5.100000e+01 7.000000e+00
> 5.300000e+01
> [37] 9.900000e+01 6.500000e+01 2.300000e+01 9.400000e+01 5.700000e+01
> 9.000000e+01
> [43] 3.200000e+01 4.700000e+01 1.600000e+01 5.000000e+01 2.800000e+01
> 3.000000e+00
> [49] 9.800000e+01 1.100000e+01 1.800000e+01 7.600000e+01 6.300000e+01
> 7.700000e+01
> [55] 7.400000e+01 4.900000e+01 8.000000e+00 9.700000e+01 1.200000e+01
> 2.700000e+01
> [61] 3.500000e+01 7.900000e+01 8.000000e+01 2.000000e+01 6.700000e+01
> 9.300000e+01
> [67] 5.000000e+00 5.600000e+01 9.000000e+00 3.700000e+01 2.400000e+01
> 9.200000e+01
> [73] 6.900000e+01 3.800000e+01 4.400000e+01 1.700000e+01 4.600000e+01
> 4.300000e+01
> [79] 3.400000e+01 1.900000e+01 2.000000e+00 9.500000e+01 7.200000e+01
> 1.000000e+00
> [85] 6.100000e+01 4.100000e+01 6.200000e+01 2.200000e+01 4.200000e+01
> 2.100000e+01
> [91] 8.400000e+01 4.800000e+01 7.800000e+01 7.300000e+01 3.000000e+01
> 5.900000e+01
> [97] 5.800000e+01 5.200000e+01 7.500000e+01
> >
>
> Ai não funcionou. Mandando o vetor e o n junto, tudo funcionava, então
> acho que estou realizando alguma operação errada na chamada recursiva ali.
>
> Olhando a descrição do comando aqui:
> http://www.cplusplus.com/reference/vector/vector/erase/
>
> Ele diz que apaga da memoria o valor, então imagino que talvez esteja
> dando problema na volta da recursão. Acho que não é tão simples usar Rcpp
> quanto imaginava.
> Quando no primeiro caso la ele diz "memory corruption: 0x098db548", esse é
> o endereço de memoria que eu usei errado não é?
>
>
>
>
>
>
>
>
> _______________________________________________
> R-br mailing list
> 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.
>
--
Grato
Augusto C. A. Ribas
Site Pessoal: http://recologia.com.br/ <http://augustoribas.heliohost.org>
Github: https://github.com/Squiercg
Lattes: http://lattes.cnpq.br/7355685961127056
participantes (3)
-
Augusto Ribas -
Benilton Carvalho -
Mauro Sznelwar