Bonjour à tous,

J'ai un petit problème technique que je n'arrive pas à résoudre, je vous explique

je me retrouve avec une matrice (df_combine) de ce style :

1 2 3 4
1 0.00 setosa 0.00 setosa
2 0.38 setosa 0.02 setosa
3 0.38 setosa 0.03 setosa
4 0.49 setosa 0.22 versiflor
5 0.99 setosa 0.26 setosa
6 1.02 virginica 0.27 setosa
7 1.18 setosa 0.29 setosa
8 1.19 virginica 0.38 setosa
9 1.36 versiflor 0.42 setosa
10 2.13 setosa 0.85 setosa

Ici j'ai une matrice avec une répétions de 2 * 2 mais je pourrais avoir une répétition de 2 * x (les 2 colonnes chiffres + levels peuvent se répéter x fois)

J'aimerais qu'ils me retourne une liste de matrice sous cette forme


[[1]]
[,1]
setosa 7
virginica 2
versiflor 1

[[2]]
[,1]
setosa 9
virginica 1
versiflor 0

(Ici une liste de 2 car ma matrice ci dessus est composée d'une répétions de 2)


J'ai tenté quelque chose de ce style :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
aunique <- levels(apprentissage_y)  #renvoie "setosa"  "virginica"  "versicolor" 
reduce <- list()
for (i in seq(2,ncol(df_combine),by=2)){
  for (j in 1:length(aunique)){
    reduce[[i/2]] <- length(which(df_combine[i]==aunique[j]))
  }
}
Seulement bien sur ça ne marche pas, il comprend pas que je souhaite une liste avec, à l'intérieur autant de matrices que de colonnes avec un nombre pair et qu'il faut compter en fonction des 3 levels ("setosa" "virginica" "versicolor").

Bien sûr j'aimerai faire cela en utilisant des variables générales et non par appel de ces données iris (cela doit fonctionner pour n'importe quel jeu de données).

Je sais pas si j'ai été assez claire...

Je vous remercie par avance pour votre aide.