Je me demande s'il existe un moyen de filtrer rapidement et efficacement les matrices sans avoir à les convertir en data frame ou data.table.
Veuillez considérer la matrice suivante :
# Choose control variables
control_vars <- c("x1", "F_5", "F_7")
my_args = lapply(control_vars, function(x) c("", x))
# Create a matrix of all combinations of the control variables
all_combs = as.matrix(do.call("expand.grid", my_args))
Le résultat ressemble à ceci :
Var1 Var2 Var3
[1,] "" "" ""
[2,] "x1" "" ""
[3,] "" "F_5" ""
[4,] "x1" "F_5" ""
[5,] "" "" "F_7"
[6,] "x1" "" "F_7"
[7,] "" "F_5" "F_7"
[8,] "x1" "F_5" "F_7"
Je veux éliminer toute ligne de cette matrice où à la fois F_5 et F_7 sont présents. Il s'agit des lignes 7 et 8.
Pour situer le contexte, j'essaie d'effectuer des régressions pas à pas et je veux éliminer les lignes où il y a des effets fixes "redondants". En d'autres termes, je n'ai besoin que de F_5 ou F_7, mais pas les deux. Par exemple, supposons que F_5 et F_7 classent les pays en 5 et 7 groupes. Ce dernier est plus granulaire que le premier, mais je ne veux pas qu'ils soient tous les deux présents dans ma régression.
Il serait facile de le faire après l'avoir converti en data.frame en comptant le nombre de "F" dans une ligne et en les supprimant ensuite, mais je me demande s'il existe une solution plus rapide et plus propre en utilisant des matrices. Mon jeu de données réel comporte 8 effets fixes substituables différents, de sorte qu'il n'est pas possible de les supprimer manuellement.
Gracias.