Chamar funções em C a partir do R - Stack Overflow em Português
Estou precisando otimizar algumas funções que estão na linguagem C, porém utilizando os pacotes de algoritmos genéticos no R.
Existe alguma forma de chamar funções de C no R?
Em matlab eu sei que existe essa possibilidade através de mex. No R tem algo parecido?
editada 1/07/15 às 13:20
O meu Google devolve Using R — Calling C Code 'Hello World!' que parece explicar bem como ligar as duas linguagens (notaL eu nao sei R, nem experimentei nada desse artigo). – pmg 1/07/15 às 12:45
Olá Bruno. Eu editei a sua pergunta pra alterar o título de forma a deixá-lo mais condizente com a pergunta. Acho que assim ele deve atrair a atenção correta. Se você não gostar da edição, pode alterá-la você mesmo ou até mesmo desfazê-la. – Luiz Vieira 1/07/15 às 13:21
Obrigado @Luiz Vieira , você saberia me ajudar? – morebru 1/07/15 às 13:23
Por nada. Eu conheço pouco do R, então acho que não consigo ajudar. Mas olhei brevemente o artigo que o @pmg postou pra você e lá parece ter muita informação útil. Pode ir te ajudando até alguém que entende mais postar uma resposta aqui. Se você mesmo descobrir como faz com base nesse artigo, por favor poste você mesmo uma resposta aqui (pois a ideia é manter conhecimento que ajude não apenas a você, mas a outros usuários futuros que podem ter a mesma dúvida). :) – Luiz Vieira 1/07/15 às 13:27
Bruno, a não ser que você tenha dúvidas mais específicas sobre a interface entre as linguagens, a resposta para a sua pergunta atualmente é "Sim: .C, .Call e External", que podem ser vistas no link postado pelo pmg e também no livro do Hadley Wickham, ambos em inglês. – Molx 2/07/15 às 2:33
Acho que atualmente a forma mais limpa e mais fácil de integrar códigos de C++ (ou C no seu caso) é usando o pacote Rcpp (link do CRAN) (site do pacote aqui).
Com o Rcpp você pode definir uma função na própria seção usando a função cppFunction:
cppFunction('int soma(int x, int y){
int soma = x+y;
Ou você também pode definir suas funções em um arquivo .cpp e usar a função sourceCpp. Você vai especificar no cabeçalho do arquivo que você está usando o Rcpp #include <Rcpp.h>, using namespace Rcpp; e em seguida definir suas funções. Se você estiver usando o RStudio, ao pedir para criar um novo arquivo c++ ele já te dá a estrutura mínima do arquivo.
Bom, com isso já dá para você começar a tentar passar o código para o R. Para mais detalhes eu recomendo o livro do Hadley para uma introdução mais geral e os vignettes do pacote e o livro do Dirk para mais detalhes sobre o Rcpp.
respondida 3/07/15 às 9:06
Perfeito @Carlos Cinelli , muito bom seu post! Me ajudou bastante. – morebru 3/07/15 às 14:27
Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag c r ou faça sua própria pergunta.