7
votes

Comment convertir une matrice de valeurs en une matrice binaire

J'aimerais convertir une matrice de valeurs en une matrice de «bits».

Je cherche des solutions et j'ai trouvé Ce , qui semble faire partie d'une solution. Je vais essayer d'expliquer ce que je cherche. J'ai une matrice comme xxx

que je souhaite convertir en xxx

donc pour chaque valeur de la rangée A "1" dans la colonne correspondante.

si j'utilise xxx

Ceci est proche de ce que je cherche, mais retourne une ligne pour chaque valeur .

Je n'aurais besoin que de consolider toutes les valeurs d'une ligne en une ligne. Parce qu'un xxx

donne toutes les valeurs de toute la table, de sorte que dois-je faire pour obtenir les valeurs par ligne.


2 commentaires

Et s'il y a deux entiers égaux dans la même rangée?


Qui n'est pas conceptionnellement pas le cas.


4 Réponses :


4
votes
    bit_x = matrix(0, nrow = nrow(x), ncol = max(x))
    for (i in 1:nrow(x)) {bit_x[i,x[i,]] = 1}

0 commentaires

4
votes

let xxx

une approche serait xxx

dans une ligne: xxx

Suivre votre approche, de la même manière à la suggestion de @ Psiidom: xxx


0 commentaires

4
votes

Voici une autre option utilisant Tableau () Code> Fonction:

table(row(x), x)
#   x
#    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#  1 1 0 0 0 0 1 0 0 0  0  1  0  0  0  0  1  0  0  0  0
#  2 0 1 0 0 0 0 1 0 0  0  0  1  0  0  0  0  1  0  0  0
#  3 0 0 1 0 0 0 0 1 0  0  0  0  1  0  0  0  0  1  0  0
#  4 0 0 0 1 0 0 0 0 1  0  0  0  0  1  0  0  0  0  1  0
#  5 0 0 0 0 1 0 0 0 0  1  0  0  0  0  1  0  0  0  0  1


0 commentaires

2
votes

Nous pouvons utiliser le package reshape2 . xxx

qui nous donne cette xxx


0 commentaires