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

Cesar Rabak cesar.rabak em gmail.com
Sexta Agosto 26 21:44:07 BRT 2011


Em 26/8/2011 20:35, Leandro Marino escreveu:

Leandro,

> /Pedro,
>
> em geral quando você tem vários FOR aninhados você pode substituí-los
> por sapply, lapply ou genéricos. Cada caso é um caso e deve ser avaliado
> com cuidado.
Esse é o famoso caso em que "só aprende a desfrutar da juventude quando 
já se está velho demais".

Se somente após rodar as duas formas ter-se-á certeza, mas aí já se tem 
resultados, e como você mesmo escreve cada caso é um caso, então a 
solução não ajuda em casos em que se tenha que repetir a análise com 
dados diferentes....

>
> Particularmente, pretendo desenvolver em C um conjunto de funções
> antigas do Prof. Ruben que rodam em FORTRAN (apenas em compiladores mais
> antigos) para que possamos usá-las dentro do R, ganhando um precioso
> tempo, entre exportar, rodar e importar os dados novamente.

Tecnicamente você vai _portar_ o conjunto de funções antigas, supondo 
que os algoritmos serão os mesmos e que você disponha de dados (de 
entrada) e resultados já conhecidos para efetuar testes.

Ainda assim, vale a pena alertá-lo que esse porte pode exigir mais que 
somente tradução do código de Fortran para C (que por sinal pode ser 
automatizado, em parte, usando um programa denominado f2c):

O Fortran e o C têm "expectativas" diferentes quanto à organização de 
matrizes 
(http://stackoverflow.com/questions/227627/fortran-array-to-c-array-stupid-macro-tricks-wanted)

Os arrays em Fortran começam a partir de um enquanto em C a partir de 
zero. Como em programação matemática a forma do Fortran faz mais sentido 
existem até propostas de "jambrar" o código em C para "emualar" esse 
tipo de programação (Numerical Recipes in C, 2ª edição, pg 18 [versão 
considerada "obsoleta" disponível p/consulta em 
http://apps.nrbook.com/c/index.html) que os especialistas em C deprecam 
(http://c-faq.com/aryptr/non0based.html).

Há ainda que tomar cuidado com tipos (conversão). . .

HTH

-- 
Cesar Rabak
GNU/Linux User 52247.
Get counted: http://counter.li.org/


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