supposer que j'ai une grande matrice (matrice_1) de 2000 colonnes. Chaque cellule a une valeur de 0 ou 1. Je veux trouver la meilleure combinaison de 10 colonnes. La meilleure combinaison donne le nombre maximum de valeurs non-0 par rangée. Ainsi, il donne essentiellement au maximumtrouver la meilleure combinaison de colonnes dans une matrice
sum (apply (matrix_2, 1, function(x) any(x == 1)))
Je ne peux pas passer par toutes les combinaisons possibles car il est trop de calculs (il y a 2.758988e + 26). Aucune suggestion?
Pour un exemple prendre cette matrice, il dispose de 4 lignes et je ne suis ramassait 2 colonnes à la fois
mat <- matrix (c(1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0), nrow = 4, byrow = FALSE)
mat
# combination of columns 2 and 3 is best: 3 rows with at least a single 1 value
sum (apply (mat[, c(2, 3)], 1, function(x) any (x == 1)))
# combination of columns 1 and 2 is worse: 2 rows with at least a single 1 value
sum (apply (mat[, c(1, 2)], 1, function(x) any (x == 1)))
Combien de lignes dans votre matrice? – CPak
100-200 lignes. Dépend de l'application –
Vous ne pouvez pas commander vos colonnes par 'colSums (col)' et choisissez le top 10? Je demande parce que je ne suis pas sûr à 100% ce que vous voulez, et cela m'aide à avoir une meilleure idée de ce que vous cherchez. – CPak