<p>No básico do basico... Envolva sua função em um extern. Dai use o .Call</p>
<p>Sent from a mobile device </p>
<div class="gmail_quote">On Aug 11, 2012 2:42 AM, "Pedro Rafael" <<a href="mailto:pedro.rafael.marinho@gmail.com">pedro.rafael.marinho@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Interessante. Com o comando RcppArmadillo.package.skeleton é possível<br>
criar a estrutura de diretórios de um pacote R. Digamos que eu tenha<br>
um código C++ e queria arrumar ele para fazer um pacote para o R. Eu<br>
queria entender como se da essa comunicação. Só a filosofia mesmo. Eu<br>
entendo como criar um pacote do R utilizando o sistema de orientação à<br>
objeto S3 e sei que existe outras como S4 e R5. O que não consigo<br>
entender bem é como comunicar o código C/C++ com o R e como se dá a<br>
comunicação desses códigos (C/C++) com o R. Vi que posso chamar<br>
códigos do R para o C++ mas acho que o mais interessante é o<br>
contrário. Como chamar um código otimizado de C++ para R e criar  um<br>
pacote caso seja conveniente. Alguém poderia me dar um exemplo com uma<br>
função bem simplória só para entender por alto como funciona?<br>
<br>
Obrigado,<br>
Pedro Rafael Diniz Marinho.<br>
<br>
<br>
Em 10 de agosto de 2012 22:23, beniltoncarvalho [via R-br]<br>
<<a href="mailto:ml-node%2Bs2285057n4655833h0@n4.nabble.com">ml-node+s2285057n4655833h0@n4.nabble.com</a>> escreveu:<br>
> Sim. Mas antes de qualquer coisa, veja o pacote RcppArmadillo e os<br>
> documentos de ajuda associados. b<br>
><br>
> 2012/8/11 Pedro Rafael <[hidden email]>:<br>
><br>
>> Uma última dúvida. É fácil integrar códigos C++ com o R? Utilizei as<br>
>> funções .C() e .Call() para chamar comandos em C para R. Nunca tentei<br>
>> utilizando C++. A construção de pacotes R feitos utilizando funções<br>
>> escritas em C++ também é tranquila?<br>
>><br>
>><br>
>> Obrigado,<br>
>> Pedro Rafael Diniz Marinho.<br>
>><br>
>><br>
>> Em 10 de agosto de 2012 22:04, Pedro Rafael<br>
>> <[hidden email]> escreveu:<br>
>>> Que legal Benilton, vou olhar bem esse pacote. Muito obrigado pelas<br>
>>> informações. Vou brincar um pouco com esse pacote.  Procurei na web<br>
>>> outros pacotes de álgebra linear para C++ mas me parece que esse é o<br>
>>> pacote livre mais completo.<br>
>>> [   ],<br>
>>> Pedro Rafael Diniz Marinho.<br>
>>><br>
>>><br>
>>> Em 10 de agosto de 2012 21:31, beniltoncarvalho [via R-br]<br>
>>> <[hidden email]> escreveu:<br>
>>>> Se vc gostou do Armadillo, divirta-se com o pacote RcppArmadillo. b<br>
>>>><br>
>>>> 2012/8/11 Pedro Rafael <[hidden email]>:<br>
>>>><br>
>>>>> Obrigado Prof. Paulo pela informação, me ajudou bastante. Eu gostei<br>
>>>>> muito Benilton da biblioteca de álgebra linear "armadillo". Muito mais<br>
>>>>> fácil que a GSL. Eu acho desorganizado os códigos C. O problema que<br>
>>>>> quando escrevo algum código matemático em C++ sempre tem uma estrutura<br>
>>>>> procedural, deve ser o vício que tenho do C. Acabo usando quase nada<br>
>>>>> de Classes, Heranças, Polimorfismo, etc. Contudo, acho interessante a<br>
>>>>> facilidade de se trabalhar com vetores, matrizes e alocação dinâmica<br>
>>>>> utilizando C++.<br>
>>>>> [   ],<br>
>>>>> Pedro Rafael Diniz Marinho.<br>
>>>>><br>
>>>>><br>
>>>>> Em 10 de agosto de 2012 20:28, beniltoncarvalho [via R-br]<br>
>>>>> <[hidden email]> escreveu:<br>
>>>>>> Pedro,<br>
>>>>>><br>
>>>>>> Há muito deixei de procurar 'a linguagem mais <escolha o adjetivo><br>
>>>>>> para <escolha a tarefa>'. Fico contente em usar qualquer linguagem que<br>
>>>>>> se mostre util e nao me force a reinventar a roda. Dito isso, nao vejo<br>
>>>>>> la essas diferencas entre C ou C++. E' obvio que algum especialista em<br>
>>>>>> alguma delas encontrara' inumeros casos que servem de contra-exemplo;<br>
>>>>>> mas enqto ele faz isso, eu sigo adiante resolvendo outros problemas.<br>
>>>>>><br>
>>>>>> b<br>
>>>>>><br>
>>>>>> 2012/8/10 Paulo Justiniano <[hidden email]>:<br>
>>>>>><br>
>>>>>>> Pedro<br>
>>>>>>><br>
>>>>>>> quando se diz em evitar inverter matrizes é porque muitas contas<br>
>>>>>>> podem<br>
>>>>>>> ser<br>
>>>>>>> feitas sem a inversao explícita<br>
>>>>>>><br>
>>>>>>> Por exemplo, a conta<br>
>>>>>>><br>
>>>>>>> X'V^{-1}X<br>
>>>>>>><br>
>>>>>>> pode ser feita evitando inversao a partir da cholesky de V<br>
>>>>>>> que pode ser aproveitada de calculos anteriores uma vez que já deve<br>
>>>>>>> ter<br>
>>>>>>> sido<br>
>>>>>>> calculada antes para obter as estimativas<br>
>>>>>>><br>
>>>>>>> No exemplo<br>
>>>>>>><br>
>>>>>>> cV <- chol(V)<br>
>>>>>>> crossprod(backsolve(cV, X, transpose=T))<br>
>>>>>>><br>
>>>>>>> isto é ***muito*** mais rapido (compare com system.time())<br>
>>>>>>> do que<br>
>>>>>>><br>
>>>>>>> t(X) %*% solve(V) %*% X<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> On Thu, 9 Aug 2012, Pedro Rafael wrote:<br>
>>>>>>><br>
>>>>>>>> Com respeito a evitar de trabalhar com inversas de matrizes é fato<br>
>>>>>>>> mas<br>
>>>>>>>> infelizmente tenho que trabalhar. Para trabalhar com modelos de<br>
>>>>>>>> regressão heterocedásticos vou precisar de cálculo de inversas de<br>
>>>>>>>> matrizes para o cálculo da estrutura de covariância de tal<br>
>>>>>>>> estimador.<br>
>>>>>>>> [   ],<br>
>>>>>>>> Pedro Rafael Diniz Marinho.<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>> Em 9 de agosto de 2012 17:02, Pedro Rafael<br>
>>>>>>>> <[hidden email]> escreveu:<br>
>>>>>>>>><br>
>>>>>>>>> Verdade Benilton inverter matrizes requer um custo computacional<br>
>>>>>>>>> bastante elevado. Atualmente programo em C e programei muito pouco<br>
>>>>>>>>> em<br>
>>>>>>>>> C++ por curiosidade. Você acreditar que códigos em C++ perdem muito<br>
>>>>>>>>> desempenho em comparação à C considerando que a programação em<br>
>>>>>>>>> ambas<br>
>>>>>>>>> as linguagens sejam eficientes? Você tem boas experiências na<br>
>>>>>>>>> utilização de C++ para programação estatística e para uso em<br>
>>>>>>>>> simulações?<br>
>>>>>>>>><br>
>>>>>>>>> Gostei bastante dessa biblioteca que você me passou, muito<br>
>>>>>>>>> interessante. Não conhecia. A única biblioteca para álgebra linear<br>
>>>>>>>>> livre que eu conhecia era a GSL.<br>
>>>>>>>>><br>
>>>>>>>>> [   ],<br>
>>>>>>>>> Pedro Rafael Diniz Marinho.<br>
>>>>>>>>><br>
>>>>>>>>><br>
>>>>>>>>> Em 9 de agosto de 2012 15:58, beniltoncarvalho [via R-br]<br>
>>>>>>>>> <[hidden email]> escreveu:<br>
>>>>>>>>>><br>
>>>>>>>>>> Eu ainda sou do time "se vc esta' invertendo matriz, entao vc<br>
>>>>>>>>>> esta'<br>
>>>>>>>>>> fazendo algo errado"...<br>
>>>>>>>>>><br>
>>>>>>>>>> Em C++, vc vai querer olhar o que Armadillo tem a oferecer.<br>
>>>>>>>>>><br>
>>>>>>>>>> b<br>
>>>>>>>>>><br>
>>>>>>>>>> 2012/8/9 Pedro Rafael <[hidden email]>:<br>
>>>>>>>>>><br>
>>>>>>>>>>> Pessoal gostaria de saber qual uma boa biblioteca livre de C para<br>
>>>>>>>>>>> trabalhar com operações matriciais como inversas e produtos de<br>
>>>>>>>>>>> matrizes. Qualquer dica será interessante.<br>
>>>>>>>>>>><br>
>>>>>>>>>>> [ ] Pedro Rafael Diniz Marinho.<br>
>>>>>>>>>>> _______________________________________________<br>
>>>>>>>>>>> R-br mailing list<br>
>>>>>>>>>>> [hidden email]<br>
>>>>>>>>>>> <a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
>>>>>>>>>>> Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e<br>
>>>>>>>>>>> forneça<br>
>>>>>>>>>>> código mínimo reproduzível.<br>
>>>>>>>>>><br>
>>>>>>>>>> _______________________________________________<br>
>>>>>>>>>> R-br mailing list<br>
>>>>>>>>>> [hidden email]<br>
>>>>>>>>>> <a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
>>>>>>>>>> Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e<br>
>>>>>>>>>> forneça<br>
>>>>>>>>>> código<br>
>>>>>>>>>> mínimo reproduzível.<br>
>>>>>>>>>><br>
>>>>>>>>>><br>
>>>>>>>>>> ________________________________<br>
>>>>>>>>>> If you reply to this email, your message will be added to the<br>
>>>>>>>>>> discussion<br>
>>>>>>>>>> below:<br>
>>>>>>>>>><br>
>>>>>>>>>><br>
>>>>>>>>>><br>
>>>>>>>>>><br>
>>>>>>>>>> <a href="http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655810.html" target="_blank">http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655810.html</a><br>

>>>>>>>>>> To unsubscribe from R-br, click here.<br>
>>>>>>>>>> NAML<br>
>>>>>>>><br>
>>>>>>>> _______________________________________________<br>
>>>>>>>> R-br mailing list<br>
>>>>>>>> [hidden email]<br>
>>>>>>>> <a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
>>>>>>>> Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça<br>
>>>>>>>> código mínimo reproduzível.<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> _______________________________________________<br>
>>>>>>> R-br mailing list<br>
>>>>>>> [hidden email]<br>
>>>>>>> <a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
>>>>>>> Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça<br>
>>>>>>> código<br>
>>>>>>> mínimo reproduzível.<br>
>>>>>> _______________________________________________<br>
>>>>>> R-br mailing list<br>
>>>>>> [hidden email]<br>
>>>>>> <a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
>>>>>> Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça<br>
>>>>>> código<br>
>>>>>> mínimo reproduzível.<br>
>>>>>><br>
>>>>>><br>
>>>>>> ________________________________<br>
>>>>>> If you reply to this email, your message will be added to the<br>
>>>>>> discussion<br>
>>>>>> below:<br>
>>>>>><br>
>>>>>><br>
>>>>>> <a href="http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655826.html" target="_blank">http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655826.html</a><br>

>>>>>> To unsubscribe from R-br, click here.<br>
>>>>>> NAML<br>
>>>>> _______________________________________________<br>
>>>>> R-br mailing list<br>
>>>>> [hidden email]<br>
>>>>> <a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
>>>>> Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça<br>
>>>>> código mínimo reproduzível.<br>
>>>> _______________________________________________<br>
>>>> R-br mailing list<br>
>>>> [hidden email]<br>
>>>> <a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
>>>> Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça<br>
>>>> código<br>
>>>> mínimo reproduzível.<br>
>>>><br>
>>>><br>
>>>> ________________________________<br>
>>>> If you reply to this email, your message will be added to the discussion<br>
>>>> below:<br>
>>>><br>
>>>> <a href="http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655830.html" target="_blank">http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655830.html</a><br>

>>>> To unsubscribe from R-br, click here.<br>
>>>> NAML<br>
>> _______________________________________________<br>
>> R-br mailing list<br>
>> [hidden email]<br>
>> <a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
>> Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça<br>
>> código mínimo reproduzível.<br>
> _______________________________________________<br>
> R-br mailing list<br>
> [hidden email]<br>
> <a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
> Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código<br>
> mínimo reproduzível.<br>
><br>
><br>
> ________________________________<br>
> If you reply to this email, your message will be added to the discussion<br>
> below:<br>
> <a href="http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655833.html" target="_blank">http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655833.html</a><br>

> To unsubscribe from R-br, click here.<br>
> NAML<br>
_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br>
</blockquote></div>