[R-br] [OFF] Biblioteca C para matrizes.

Pedro Rafael pedro.rafael.marinho em gmail.com
Sexta Agosto 10 22:42:03 BRT 2012


Interessante. Com o comando RcppArmadillo.package.skeleton é possível
criar a estrutura de diretórios de um pacote R. Digamos que eu tenha
um código C++ e queria arrumar ele para fazer um pacote para o R. Eu
queria entender como se da essa comunicação. Só a filosofia mesmo. Eu
entendo como criar um pacote do R utilizando o sistema de orientação à
objeto S3 e sei que existe outras como S4 e R5. O que não consigo
entender bem é como comunicar o código C/C++ com o R e como se dá a
comunicação desses códigos (C/C++) com o R. Vi que posso chamar
códigos do R para o C++ mas acho que o mais interessante é o
contrário. Como chamar um código otimizado de C++ para R e criar  um
pacote caso seja conveniente. Alguém poderia me dar um exemplo com uma
função bem simplória só para entender por alto como funciona?

Obrigado,
Pedro Rafael Diniz Marinho.


Em 10 de agosto de 2012 22:23, beniltoncarvalho [via R-br]
<ml-node+s2285057n4655833h0 em n4.nabble.com> escreveu:
> Sim. Mas antes de qualquer coisa, veja o pacote RcppArmadillo e os
> documentos de ajuda associados. b
>
> 2012/8/11 Pedro Rafael <[hidden email]>:
>
>> Uma última dúvida. É fácil integrar códigos C++ com o R? Utilizei as
>> funções .C() e .Call() para chamar comandos em C para R. Nunca tentei
>> utilizando C++. A construção de pacotes R feitos utilizando funções
>> escritas em C++ também é tranquila?
>>
>>
>> Obrigado,
>> Pedro Rafael Diniz Marinho.
>>
>>
>> Em 10 de agosto de 2012 22:04, Pedro Rafael
>> <[hidden email]> escreveu:
>>> Que legal Benilton, vou olhar bem esse pacote. Muito obrigado pelas
>>> informações. Vou brincar um pouco com esse pacote.  Procurei na web
>>> outros pacotes de álgebra linear para C++ mas me parece que esse é o
>>> pacote livre mais completo.
>>> [   ],
>>> Pedro Rafael Diniz Marinho.
>>>
>>>
>>> Em 10 de agosto de 2012 21:31, beniltoncarvalho [via R-br]
>>> <[hidden email]> escreveu:
>>>> Se vc gostou do Armadillo, divirta-se com o pacote RcppArmadillo. b
>>>>
>>>> 2012/8/11 Pedro Rafael <[hidden email]>:
>>>>
>>>>> Obrigado Prof. Paulo pela informação, me ajudou bastante. Eu gostei
>>>>> muito Benilton da biblioteca de álgebra linear "armadillo". Muito mais
>>>>> fácil que a GSL. Eu acho desorganizado os códigos C. O problema que
>>>>> quando escrevo algum código matemático em C++ sempre tem uma estrutura
>>>>> procedural, deve ser o vício que tenho do C. Acabo usando quase nada
>>>>> de Classes, Heranças, Polimorfismo, etc. Contudo, acho interessante a
>>>>> facilidade de se trabalhar com vetores, matrizes e alocação dinâmica
>>>>> utilizando C++.
>>>>> [   ],
>>>>> Pedro Rafael Diniz Marinho.
>>>>>
>>>>>
>>>>> Em 10 de agosto de 2012 20:28, beniltoncarvalho [via R-br]
>>>>> <[hidden email]> escreveu:
>>>>>> Pedro,
>>>>>>
>>>>>> Há muito deixei de procurar 'a linguagem mais <escolha o adjetivo>
>>>>>> para <escolha a tarefa>'. Fico contente em usar qualquer linguagem que
>>>>>> se mostre util e nao me force a reinventar a roda. Dito isso, nao vejo
>>>>>> la essas diferencas entre C ou C++. E' obvio que algum especialista em
>>>>>> alguma delas encontrara' inumeros casos que servem de contra-exemplo;
>>>>>> mas enqto ele faz isso, eu sigo adiante resolvendo outros problemas.
>>>>>>
>>>>>> b
>>>>>>
>>>>>> 2012/8/10 Paulo Justiniano <[hidden email]>:
>>>>>>
>>>>>>> Pedro
>>>>>>>
>>>>>>> quando se diz em evitar inverter matrizes é porque muitas contas
>>>>>>> podem
>>>>>>> ser
>>>>>>> feitas sem a inversao explícita
>>>>>>>
>>>>>>> Por exemplo, a conta
>>>>>>>
>>>>>>> X'V^{-1}X
>>>>>>>
>>>>>>> pode ser feita evitando inversao a partir da cholesky de V
>>>>>>> que pode ser aproveitada de calculos anteriores uma vez que já deve
>>>>>>> ter
>>>>>>> sido
>>>>>>> calculada antes para obter as estimativas
>>>>>>>
>>>>>>> No exemplo
>>>>>>>
>>>>>>> cV <- chol(V)
>>>>>>> crossprod(backsolve(cV, X, transpose=T))
>>>>>>>
>>>>>>> isto é ***muito*** mais rapido (compare com system.time())
>>>>>>> do que
>>>>>>>
>>>>>>> t(X) %*% solve(V) %*% X
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Thu, 9 Aug 2012, Pedro Rafael wrote:
>>>>>>>
>>>>>>>> Com respeito a evitar de trabalhar com inversas de matrizes é fato
>>>>>>>> mas
>>>>>>>> infelizmente tenho que trabalhar. Para trabalhar com modelos de
>>>>>>>> regressão heterocedásticos vou precisar de cálculo de inversas de
>>>>>>>> matrizes para o cálculo da estrutura de covariância de tal
>>>>>>>> estimador.
>>>>>>>> [   ],
>>>>>>>> Pedro Rafael Diniz Marinho.
>>>>>>>>
>>>>>>>>
>>>>>>>> Em 9 de agosto de 2012 17:02, Pedro Rafael
>>>>>>>> <[hidden email]> escreveu:
>>>>>>>>>
>>>>>>>>> Verdade Benilton inverter matrizes requer um custo computacional
>>>>>>>>> bastante elevado. Atualmente programo em C e programei muito pouco
>>>>>>>>> em
>>>>>>>>> C++ por curiosidade. Você acreditar que códigos em C++ perdem muito
>>>>>>>>> desempenho em comparação à C considerando que a programação em
>>>>>>>>> ambas
>>>>>>>>> as linguagens sejam eficientes? Você tem boas experiências na
>>>>>>>>> utilização de C++ para programação estatística e para uso em
>>>>>>>>> simulações?
>>>>>>>>>
>>>>>>>>> Gostei bastante dessa biblioteca que você me passou, muito
>>>>>>>>> interessante. Não conhecia. A única biblioteca para álgebra linear
>>>>>>>>> livre que eu conhecia era a GSL.
>>>>>>>>>
>>>>>>>>> [   ],
>>>>>>>>> Pedro Rafael Diniz Marinho.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Em 9 de agosto de 2012 15:58, beniltoncarvalho [via R-br]
>>>>>>>>> <[hidden email]> escreveu:
>>>>>>>>>>
>>>>>>>>>> Eu ainda sou do time "se vc esta' invertendo matriz, entao vc
>>>>>>>>>> esta'
>>>>>>>>>> fazendo algo errado"...
>>>>>>>>>>
>>>>>>>>>> Em C++, vc vai querer olhar o que Armadillo tem a oferecer.
>>>>>>>>>>
>>>>>>>>>> b
>>>>>>>>>>
>>>>>>>>>> 2012/8/9 Pedro Rafael <[hidden email]>:
>>>>>>>>>>
>>>>>>>>>>> Pessoal gostaria de saber qual uma boa biblioteca livre de C para
>>>>>>>>>>> trabalhar com operações matriciais como inversas e produtos de
>>>>>>>>>>> matrizes. Qualquer dica será interessante.
>>>>>>>>>>>
>>>>>>>>>>> [ ] Pedro Rafael Diniz Marinho.
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> R-br mailing list
>>>>>>>>>>> [hidden email]
>>>>>>>>>>> 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
>>>>>>>>>> [hidden email]
>>>>>>>>>> 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.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> ________________________________
>>>>>>>>>> If you reply to this email, your message will be added to the
>>>>>>>>>> discussion
>>>>>>>>>> below:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655810.html
>>>>>>>>>> To unsubscribe from R-br, click here.
>>>>>>>>>> NAML
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> R-br mailing list
>>>>>>>> [hidden email]
>>>>>>>> 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
>>>>>>> [hidden email]
>>>>>>> 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
>>>>>> [hidden email]
>>>>>> 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.
>>>>>>
>>>>>>
>>>>>> ________________________________
>>>>>> If you reply to this email, your message will be added to the
>>>>>> discussion
>>>>>> below:
>>>>>>
>>>>>>
>>>>>> http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655826.html
>>>>>> To unsubscribe from R-br, click here.
>>>>>> NAML
>>>>> _______________________________________________
>>>>> R-br mailing list
>>>>> [hidden email]
>>>>> 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
>>>> [hidden email]
>>>> 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.
>>>>
>>>>
>>>> ________________________________
>>>> If you reply to this email, your message will be added to the discussion
>>>> below:
>>>>
>>>> http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655830.html
>>>> To unsubscribe from R-br, click here.
>>>> NAML
>> _______________________________________________
>> R-br mailing list
>> [hidden email]
>> 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
> [hidden email]
> 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.
>
>
> ________________________________
> If you reply to this email, your message will be added to the discussion
> below:
> http://r-br.2285057.n4.nabble.com/R-br-OFF-Biblioteca-C-para-matrizes-tp4655808p4655833.html
> To unsubscribe from R-br, click here.
> NAML


Mais detalhes sobre a lista de discussão R-br