R et son interface C

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Hajer SOUAIFI
Messages : 6
Enregistré le : 08 Juin 2007, 19:21

R et son interface C

Messagepar Hajer SOUAIFI » 30 Juil 2007, 17:04

Bonjour à tous !!

Je ne sais pas si cette question a été déjà posée sur le forum. Si c'est le cas, excusez-moi d'avance.

Voilà mon problème.
Je souhaite augmenter la rapidité d'un programme R qui utilise pas mal de boucles for (que je ne pense pas pouvoir simplifier avec des tapply ou autre à cause des indices de boucle) mais aussi des fonctions de R (tel que le tri "sort") par conséquent, j'ai pensé à l'interface C de R. Après quelques recherches (pour l'installation de ce qui est nécessaire pour compiler du C sous Windows) et la lecture du manuel "Writing R extensions", je me demande à présent si cette technique est possible pour toutes les fonctions.

Je m'explique. Les fonctions de ce programme d'une extrème lenteur s'appellent les unes les autres et utilisent leurs résultats réciproques. Or je ne sais pas si l'interface de C permet de faire cela.

Pouvez-vous me dire si je me plante complètement ? Si c'est le cas, auriez-vous un exemple bateau à me proposer ?

Merci par avance.
HS

François Bonnot
Messages : 537
Enregistré le : 10 Nov 2004, 15:19
Contact :

Messagepar François Bonnot » 31 Juil 2007, 06:41

Bonjour,
Il y a une discussion sur l'interface R et C ici :
http://forums.cirad.fr/logiciel-R/viewtopic.php?t=167

Les fonctions de ce programme d'une extrême lenteur s'appellent les unes les autres et utilisent leurs résultats réciproques. Or je ne sais pas si l'interface de C permet de faire cela.


Le principe est :
- passer à C toutes les données (pointeurs) nécessaires
- réaliser le calcul en C
- récupérer les résultats (avec les mêmes pointeurs)

Si le calcul de l'étape 2 est possible entièrement en C il n'y a pas de problème.
S'il faut repasser par R pour certains calculs (par ex tri) je ne sais pas si c'est possible à partir du C. Une solution est d'écrire en C le maximum de fonctions qui prennent du temps et de les appeler à partir de R. Il faut reporter dans C le plus de boucles possible.

Hajer SOUAIFI
Messages : 6
Enregistré le : 08 Juin 2007, 19:21

Messagepar Hajer SOUAIFI » 31 Juil 2007, 09:13

Bonjour,

Merci pour votre réponse. J'ai déjà lu le lien que vous me proposer et je connais à peu près la façon de procéder avec l'interface C (les fameux pointeurs).
Pour être plus précise, je voudrais savoir s'il est possible de créer, dans ce contexte, une suite de plusieurs fonctions en langage C (avec pointeurs et ce qu'il faut) qui s'appellent entre elles en utilisant leurs résultats réciproques mais aussi des objets et des fonctions de R (programmées ou déjà implémantées) et enfin on utilise R pour faire tourner l'ensemble.

Je ne sais pas si c'est clair. Mais c'est en gros ce que j'essaie de faire.

Merci d'avance.
HS

François Bonnot
Messages : 537
Enregistré le : 10 Nov 2004, 15:19
Contact :

Messagepar François Bonnot » 31 Juil 2007, 09:34

Mon but est d'améliorer, par exemple, la fonction prevts

Je pense qu'il s'agit plutôt de prevt_p ?
La question est très claire, et peut se résumer à la question suivante :
Peut-on appeler une fonction R à partir du code C ?
Je crois avoir vu un article sur ce problème, malheureusement je n'ai plus la référence. Je vous la communiquerai si je la retrouve.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité