no need to generate random IO params: migrate in test. Add roxygen2 NAMESPACE-generat...
[valse.git] / pkg / R / selectiontotale.R
index bfb9325..2cdac38 100644 (file)
@@ -29,6 +29,7 @@ selectiontotale = function(phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,glambd
     selectedVariables = list()
     Rho = list()
     Pi = list()
+    cpt = 1
     #Pour chaque lambda de la grille, on calcule les coefficients
     for (lambdaIndex in 1:length(glambda)){
       print(lambdaIndex)
@@ -37,13 +38,18 @@ selectiontotale = function(phiInit,rhoInit,piInit,gamInit,mini,maxi,gamma,glambd
       p = dim(phiInit)[1]
       m = dim(phiInit)[2]
       #selectedVariables: list where element j contains vector of selected variables in [1,m]
-      selectedVariables[[lambdaIndex]] = sapply(1:p, function(j) {
-        #from boolean matrix mxk of selected variables obtain the corresponding boolean m-vector,
-        #and finally return the corresponding indices
-        c(seq_len(m)[ apply( abs(params$phi[j,,]) > thresh, 1, any ) ], rep(0, m-length(apply( abs(params$phi[j,,]) > thresh, 1, any ) )))
-      })
-      Rho[[lambdaIndex]] = params$Rho
-      Pi[[lambdaIndex]] = params$Pi
+      if (sum(params$phi) != 0){
+        selectedVariables[[cpt]] = sapply(1:p, function(j) {
+          #from boolean matrix mxk of selected variables obtain the corresponding boolean m-vector,
+          #and finally return the corresponding indices
+          c(seq_len(m)[ apply( abs(params$phi[j,,]) > thresh, 1, any ) ], rep(0, m-length(seq_len(m)[ apply( abs(params$phi[j,,]) > thresh, 1, any ) ] ) ))
+        })
+        if (length(unique(selectedVariables)) == length(selectedVariables)){
+          Rho[[cpt]] = params$rho
+          Pi[[cpt]] = params$pi
+          cpt = cpt+1
+        }
+      }
     }
     list("selected"=selectedVariables,"Rho"=Rho,"Pi"=Pi)
   }