O R possui uma limitação devido a demora de alguns procedimentos realizados nele. O software foi criado para ser ótimo do ponto de vista de processamento computacional quando o usuário utiliza as informações de maneira vetorizada. Quando o processo é realizado de elemento a elemento alguma demora no processamento surge.
Nesse sentido, aqui daremos uma primeira introdução quanto ao uso do pacote RCpp (http://www.rcpp.org/), o qual permite otimizar alguns procedimentos em R usando linguagem C++.
O primeiro passo para desenvolver suas próprias funções em RCpp é ter instalado:
- R
- RTools - É preciso que ele esteja instalado na raiz (C:\) e com todas as opções habilitadas.
- RStudio
Em seguida, abrimos o RStudio e escolhemos a opção File → New File → C++ File:
O RStudio fornecerá um exemplo de como construir funções usando RCpp:
Onde o primeiro bloco de código, da linha 1 até a 24 é código escrito em C++, o que está contido na linha 26 é o código em R usando para a invocação da função em C++. Para compilar a função é necessário clicar no botão Source destacado na figura anterior. Ao clicar nesse botão a função é compilada e fica disponível para ser executada.
É comum no entanto ter dois arquivos: um arquivo com as funções em C++ e outro arquivo com as funções em R, por isso considere o seguinte código para o arquivo com extensão .cpp:
#includeusing namespace Rcpp; // This is a simple example of exporting a C++ function to R. // [[Rcpp::export]] NumericVector timesTwo(NumericVector x) { return x * 2; }
E no arquivo em R (com extensão .R):
#Invoca a biblioteca RCpp library(Rcpp) #Define o endereço do arquivo Cpp setwd("C:\\Blog\\Source") #Compila o código em C++ sourceCpp('Teste.cpp') #Inova a função compilada timesTwo(42)
Note que nesse exemplo, Teste.cpp é o nome do arquivo com o código em RCpp armazenado na pasta C:\Blog\Source. No próximo post mostrarei como fazer funções mais complexas envolvendo os pacotes do R e seus objetos com o Rcpp.