0
で使用するCPP機能の変換しますポインタはRは、私はそれをコンパイルして使用するようにrcppパッケージを使用しますが、いくつかのエラーが</p> <p>に発生した実際、私は使用して問題を抱えているCPPの機能を以下およびR</p> <p>でそれを書きたいしているR
void creationPI(double *distC, int mC, int tailleC, double *PIC,int aC)
//distC: distribution de X ; mC= smax-smin+1 ie u+v+1; tailleC=a+1; PIC la matrice PI comme resultat
{
double *f;//=NULL; /*f(k)=P[X<=k]*/
int t1,k,b,c,l;
int top_un,top_deux;
//FILE *matrix;
t1=2*(aC-1)+1; // taille du vecteur des f ca va de 1-a à a-1 ; k va de [0 à 2*(a-1)]
/* ALLOCATION DES MATRICES*/
//if (!(f = (double *)calloc(t1, sizeof(double))))
//exit(ALLOC_ERROR);
f = (double *)calloc(t1, sizeof(double));
/* CREATION DES f */
if ((aC-1)<=u) top_un=aC-1; else top_un=u; //top_un=min
if ((aC-1)>=u) top_deux=aC-1; else top_deux=u;//top_deux=max
/*On a 0<->1-a donc f[k]=P[X<=k+1-a] ou encore P[X<=l]=f[l-1+a]*/
if (aC>v+1)
{ //remplir le premier f
for (k=1-aC; k<smin; k++) {b=k-1+aC; *(f+b)=0;} // on passe dans cette boucle si a> v+1
//on remplit la suite jusqu'a min(u,a-1): P[X<=k+1-a]=P[X<=k-a]+P[X=k+1-a]
//on remplit donc soit jusqu'a la fin de f soit jusqu'au premier 1 car on utiliser tous les distC
for (k=smin; k<top_un+1 ; k++) {b=k-1+aC; *(f+b)=*(f+b-1)+*(distC +k-smin);}
//On gere le bout droit, quand il reste des f non remplis :
if (aC-1>u) {for (k=top_un+1; k<aC-1+1 ; k++) {b=k-1+aC; *(f+b)=1;}}
}
else // on a aC<=v+1
{ // on remplit le premier f
*f=0;
for (k=smin; k<1-aC+1 ;k++)
{b=k-smin; *f=*f+ *(distC+b);}
// la suite : P[X<=k+1-a]=P[X<=k-a]+P[X=k+1-a], remarque identique a la precedente
for (k=1-aC+1;k<top_un+1; k++)
{b=k+aC-1; *(f+b)=*(f+b-1)+ *(distC+v+k);}//dernier +1 cf <
//On gere le bout droit, quand il reste des f non remplis :
if (aC-1>u) {for (k=top_un+1; k<aC-1+1 ; k++) {b=k-1+aC; *(f+b)=1;}}
}
/*Creation de la matrice PI*/
/*PIC[a][a]=1*/
*(PIC + (tailleC * aC) + aC)=1;
for (k=0; k<aC; k++)
{
b=aC-k-1;
*(PIC +(tailleC * k))=*(f+b);
c=(2*aC)-k-2; /* Pi[0,k]=f(-k)*/
*(PIC +(tailleC *k) +aC)=1- *(f+c); /*Pi[a,l]=1-f(a-k-1)*/
for (l=1; l<aC; l++)
{
b=l-k-smin;
if(b>=0 && b<mC) *(PIC+(tailleC *k)+l)=*(distC + b);
/*Pi[k,l]=P[X=l-k]*/
else *(PIC+(tailleC *k)+l)=0.0;
}
*(PIC+(tailleC *aC)+k)=0.0;
}
free(f);
}//fin proc creationPI
Rでこの関数を実行することはできますか?
Rでポインタを検出する方法は?
おかげ