add affect[ations] in EMGLLF.c return
[valse.git] / pkg / src / adapters / a.EMGLLF.c
index 4ef4396..f24cd2a 100644 (file)
@@ -46,7 +46,7 @@ SEXP EMGLLF(
        // OUTPUTS //
        /////////////
 
-       SEXP phi, rho, pi, LLF, S, dimPhiS, dimRho;
+       SEXP phi, rho, pi, LLF, S, affec, dimPhiS, dimRho;
        PROTECT(dimPhiS = allocVector(INTSXP, 3));
        int* pDimPhiS = INTEGER(dimPhiS);
        pDimPhiS[0] = p; pDimPhiS[1] = m; pDimPhiS[2] = k;
@@ -58,22 +58,25 @@ SEXP EMGLLF(
        PROTECT(pi = allocVector(REALSXP, k));
        PROTECT(LLF = allocVector(REALSXP, maxi-mini+1));
        PROTECT(S = allocArray(REALSXP, dimPhiS));
+       PROTECT(affec = allocVector(INTSXP, n));
        double *pPhi=REAL(phi), *pRho=REAL(rho), *pPi=REAL(pi), *pLLF=REAL(LLF), *pS=REAL(S);
+       int *pAffec=INTEGER(affec);
 
        ////////////////////
        // Call to EMGLLF //
        ////////////////////
 
        EMGLLF_core(phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,lambda,X,Y,tau,
-               pPhi,pRho,pPi,pLLF,pS,
+               pPhi,pRho,pPi,pLLF,pS,pAffec,
                n,p,m,k);
 
        // Build list from OUT params and return it
        SEXP listParams, listNames;
-       PROTECT(listParams = allocVector(VECSXP, 5));
-       char* lnames[5] = {"phi", "rho", "pi", "LLF", "S"}; //lists labels
-       PROTECT(listNames = allocVector(STRSXP,5));
-       for (int i=0; i<5; i++)
+       int nouts = 6;
+       PROTECT(listParams = allocVector(VECSXP, nouts));
+       char* lnames[6] = {"phi", "rho", "pi", "LLF", "S", "affec"}; //lists labels
+       PROTECT(listNames = allocVector(STRSXP,nouts));
+       for (int i=0; i<nouts; i++)
                SET_STRING_ELT(listNames,i,mkChar(lnames[i]));
        setAttrib(listParams, R_NamesSymbol, listNames);
        SET_VECTOR_ELT(listParams, 0, phi);
@@ -81,7 +84,8 @@ SEXP EMGLLF(
        SET_VECTOR_ELT(listParams, 2, pi);
        SET_VECTOR_ELT(listParams, 3, LLF);
        SET_VECTOR_ELT(listParams, 4, S);
+       SET_VECTOR_ELT(listParams, 5, affec);
 
-       UNPROTECT(9);
+       UNPROTECT(10);
        return listParams;
 }