#include <R.h>
#include <Rdefines.h>
-#include "sources/EMGLLF.h"
+#include "constructionModelesLassoMLE.h"
-SEXP EMGLLF(
+SEXP constructionModelesLassoMLE(
SEXP phiInit_,
SEXP rhoInit_,
SEXP piInit_,
) {
// Get matrices dimensions
int n = INTEGER(getAttrib(X_, R_DimSymbol))[0];
- SEXP dim = getAttrib(phiInit_, R_DimSymbol)
+ SEXP dim = getAttrib(phiInit_, R_DimSymbol);
int p = INTEGER(dim)[0];
int m = INTEGER(dim)[1];
int k = INTEGER(dim)[2];
- int L = INTEGER(getAttrib(glambda_, R_LengthSymbol))[0];
+ int L = length(glambda_);
////////////
// INPUTS //
double* glambda = REAL(glambda_);
double* X = REAL(X_);
double* Y = REAL(Y_);
- double* A1 = REAL(A1_);
- double* A2 = REAL(A2_);
+ int* A1 = INTEGER(A1_);
+ int* A2 = INTEGER(A2_);
/////////////
// OUTPUTS //
/////////////
- SEXP phi, rho, pi, lvraisemblance, dimPhi, dimRho;
+ SEXP phi, rho, pi, llh, dimPhi, dimRho;
PROTECT(dimPhi = allocVector(INTSXP, 4));
int* pDimPhi = INTEGER(dimPhi);
pDimPhi[0] = p; pDimPhi[1] = m; pDimPhi[2] = k; pDimPhi[3] = L;
PROTECT(phi = allocArray(REALSXP, dimPhi));
PROTECT(rho = allocArray(REALSXP, dimRho));
PROTECT(pi = allocMatrix(REALSXP, k, L));
- PROTECT(lvraisemblance = allocMatrix(REALSXP, L, 2));
- double* pPhi=REAL(phi), pRho=REAL(rho), pPi=REAL(pi), pLvraisemblance=REAL(lvraisemblance);
+ PROTECT(llh = allocMatrix(REALSXP, L, 2));
+ double *pPhi=REAL(phi), *pRho=REAL(rho), *pPi=REAL(pi), *pllh=REAL(llh);
/////////////////////////////////////////
// Call to constructionModelesLassoMLE //
/////////////////////////////////////////
- constructionModelesLassoMLE(
+ constructionModelesLassoMLE_core(
phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,glambda,X,Y,seuil,tau,A1,A2,
- pPhi,pRho,pPi,pLvraisemblance,
+ pPhi,pRho,pPi,pllh,
n,p,m,k,L);
// Build list from OUT params and return it
SEXP listParams, listNames;
PROTECT(listParams = allocVector(VECSXP, 4));
- char* lnames[4] = {"phi", "rho", "pi", "lvraisemblance"}; //lists labels
+ char* lnames[4] = {"phi", "rho", "pi", "llh"}; //lists labels
PROTECT(listNames = allocVector(STRSXP,4));
for (int i=0; i<4; i++)
SET_STRING_ELT(listNames,i,mkChar(lnames[i]));
setAttrib(listParams, R_NamesSymbol, listNames);
- SET_ARRAY_ELT(listParams, 0, phi);
- SET_ARRAY_ELT(listParams, 1, rho);
- SET_MATRIX_ELT(listParams, 2, pi);
- SET_VECTOR_ELT(listParams, 3, lvraisemblance);
+ SET_VECTOR_ELT(listParams, 0, phi);
+ SET_VECTOR_ELT(listParams, 1, rho);
+ SET_VECTOR_ELT(listParams, 2, pi);
+ SET_VECTOR_ELT(listParams, 3, llh);
UNPROTECT(8);
return listParams;