Bonjour,

la question a déjà été abordée dans de nombreux forums (notamment celui-ci), mais je ne m'en sors pas

Afin de "comprendre ce que je ne comprend pas", je vous soumets un petit exemple de code: si vous pouviez m'indiquer mes erreurs svp

Tout d'abord, je crée, dans R, une fonction recup_Donnees.R, qui prend en entrée le nom d'un fichier, fait un calcul -de survie- et me retourne la statistique du chi2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
recup_Donnees <- function(x){
  library(survival)
  DataF <- read.csv2(paste("C:\\Users\\utilisateur\\Documents\\", x, sep = ""), header=T)
  stat_test <- survdiff(Surv(temps, statut) ~ groupe, data=DataF)
  return(stat_test$chisq)      
}
Ensuite, dans C, je veux appeler cette fonction pour comparer la statistique de test à un nombre fixé (exemple totalement absurde/inutile, construit seulement pour comprendre le passage R<->C):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <R.h>
#include <Rinternals.h>
 
void AppelFctUtilPackage(SEXP MyData, void **fct, void *env, int *res)
{
    SEXP f, rho;
    int i;
 
    /* Mettre la fonction R et son environnement dans des variables de type SEXP */
    f = (SEXP)fct;
    rho = (SEXP)env;
 
    PROTECT(res=allocVector(res, REALSXP));
 
    i = lang2(f, MyData);
    Rprintf("%d", i);
    if (i>18)
    {
        res = 1;
    }
    else
    {
        res = 2;
    }
    UNPROTECT(1);
    return res;
}
Je compile:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
R CMD SHLIB AppelFctUtilPackage.c
Le fichier AppelFctUtilPackage.dll est bien créé.

Enfin, je retourne dans R:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
dyn.load("C:\\Users\\utilisateur\\Documents\\AppelFctUtilPackage.dll")
source("C:\\Users\\utilisateur\\Documents\\recup_Donnees.R")
res <- 0 
.C("AppelFctUtilPackage", "DataFreireich.csv", recup_Donnees, new.env(), res=as.integer(res))
Erreur retournée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Erreur : type 102251408 est indisponible dans 'type2char'
Merci à tous ceux (et toutes celles) qui auront eu le courage de lire jusqu'ici
Et merci d'avance pour votre aide!

Bonne journée

PS: 1/ pour faire tourner, voici où trouver DataFreireich.csv: ici
2/ si gbdivers passe par ici: il me semble que Rcpp ne permet l'incorporation de code R que dans C++ et pas dans C. Pourriez-vous me le confirmer svp? Merci!