[R-br] RES: [Dúvida] Invocar funções C++ no R

Pedro Rafael pedro.rafael.marinho em gmail.com
Sexta Agosto 26 17:07:05 BRT 2011


Fiz um programa muito simples para entender. O programa simplesmente soma um
número com outro e está abaixo:

/* INICIO */
#include <R.h>

/* Funcao Principal */
void soma1(double *a, double *b, double *res)
{
     *res = *a + *b;
}
/* FIM */

Depois de gerar o arquivo soma1.dll fiz no R:

dyn.load("soma1.dll")
soma2 <- function(a,b){
.C("soma1", as.double(a), as.double(b), res = a + b)$res
}

O programa está pensado corretamente? Aproveito para pedir desculpas por
aperriar tanto vocês e batendo na tecla só nesse assunto.

Saudações,
Pedro Rafael


Em 26 de agosto de 2011 16:57, Leandro Marino [via R-br] <
ml-node+3771831-993372325-223914 em n4.nabble.com> escreveu:

>  Estou com uma dúvida!****
>
> ** **
>
> Se for criar um pacote no R (apenas para uso interno aqui na empresa) com
> diversas rotinas em C, terei que compilá-lo para cada uma dos OS e
> arquiteruras? No caso uso Win e Linux (32 e 64)!
>
> ****
>
> ** **
>
> Atenciosamente,
> *Leandro Lins Marino**
> **Centro de Avaliação**
> **Fundação CESGRANRIO**
> **Rua Santa Alexandrina, 1011 - 2º andar**
> **Rio de Janeiro, RJ - CEP: 20261-903**
> **(** **(21) 2103-9600 R.:236 **
> ***** [hidden email]<http://user/SendEmail.jtp?type=node&node=3771831&i=0>
> *
>
> ** **
>
> P*  **Antes de imprimir* *pense em sua responsabilidade e compromisso com
> o* *MEIO AMBIENTE* ****
>
> ** **
>
> Esta mensagem, incluindo seus anexos, pode conter informacoes privilegiadas
> e/ou de carater confidencial, nao podendo ser retransmitida sem autorizacao
> do remetente. Se voce nao e o destinatario ou pessoa autorizada a recebe-la,
> informamos que o seu uso, divulgacao, copia ou arquivamento sao proibidos.
> ****
>
> Portanto, se você recebeu esta mensagem por engano, por favor, nos informe
> respondendo imediatamente a este e-mail e em seguida apague-a.****
>
> ** **
>
> *De:* [hidden email]<http://user/SendEmail.jtp?type=node&node=3771831&i=1>[mailto:[hidden
> email] <http://user/SendEmail.jtp?type=node&node=3771831&i=2>] *Em nome de
> *Pedro Rafael
> *Enviada em:* sexta-feira, 26 de agosto de 2011 16:34
> *Para:* [hidden email]<http://user/SendEmail.jtp?type=node&node=3771831&i=3>
> *Assunto:* Re: [R-br] [Dúvida] Invocar funções C++ no R****
>
> ** **
>
> Fiz um programa muito simples para entender. O programa simplesmente soma
> um número com outro e está abaixo:****
>
> ** **
>
> /* INICIO */****
>
> #include <R.h> ****
>
> ** **
>
> /* Funcao Principal */ ****
>
> void soma1(double *a, double *b, double *res) ****
>
> { ****
>
>      *res = *a + *b; ****
>
> } ****
>
> /* FIM */****
>
> ** **
>
> Depois de gerar o arquivo soma1.dll fiz no R:****
>
> ** **
>
> dyn.load("soma1.dll")****
>
> soma2 <- function(a,b){****
>
>             .C("soma1", as.double(a), as.double(b), res = a + b)$res****
>
>             }****
>
> ** **
>
> O programa está pensado corretamente? Aproveito para pedir desculpas por
> aperriar tanto vocês e batendo na tecla só nesse assunto.****
>
> ** **
>
> Saudações,****
>
> Pedro Rafael****
>
> ** **
>
> ** **
>
> ** **
>
> Em 26 de agosto de 2011 12:37, beniltoncarvalho [via R-br] <[hidden email]<http://user/SendEmail.jtp?type=node&node=3771831&i=4>>
> escreveu:****
>
> Depende apenas do que vc estiver fazendo. .Call() e' conveniente por
> retornar objetos ao R diretamente. O .C() e' legal pq vc pode pegar
> funcoes ja' prontas em C e apenas criar um wrapper (vide GSL). b ****
>
> _______________________________________________
> R-br mailing list
> [hidden email] <http://user/SendEmail.jtp?type=node&node=3771222&i=0>
> 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-Duvida-Invocar-funcoes-C-no-R-tp3768159p3771222.html
> ****
>
> To unsubscribe from R-br, click here. ****
>
>
>
> ****
>
> ** **
>
> --
> Saudações,****
>
> Pedro Rafael Diniz Marinho.****
>
> ** **
>
> _______________________________________________
> R-br mailing list
> [hidden email] <http://user/SendEmail.jtp?type=node&node=3771831&i=5>
> 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-Duvida-Invocar-funcoes-C-no-R-tp3768159p3771831.html
>  To unsubscribe from R-br, click here<http://r-br.2285057.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=3357982&code=cGVkcm8ucmFmYWVsLm1hcmluaG9AZ21haWwuY29tfDMzNTc5ODJ8NTAyMjI0MDYw>.
>
>



-- 
Saudações,
Pedro Rafael Diniz Marinho.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20110826/f5b9db97/attachment.html>


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