Je dois remplir les distances matricielles avec 0. Comment faire?
distances <- matrix(1:25, nrow=5, ncol=5)
apply(distances, c(1, 2), function(x) 0)
Je vais le mettre ici car il y a beaucoup de bonnes réponses dans les commentaires
Vous pouvez créer une toute nouvelle matrice en utilisant les dimensions de votre ancienne matrice
matrix(0L, nrow = dim(distances)[1], ncol = dim(distances)[2]) # @nrussell
Ou, de la même manière, pour enregistrer quelques frappes (car un matrix
est un cas spécial de deux dimensions array
)
array(0L, dim(distances)) # @alexis_laz
Ou vous pouvez conserver la structure de votre ancienne matrice en utilisant []
Et la remplir de zéros
distances[] <- 0L # @Richard
Ou vous pouvez simplement multiplier toutes les valeurs par zéro
distances*0L # @akrun
Ou une solution plus générale serait de prendre également en compte NA
cas (car chaque nombre au pouvoir de zéro est toujours égal à 1)
distances^0L - 1L # @docendodiscimus
Ou certains de mes trucs: vous pouvez convertir votre matrice en matrice logique de différentes manières, puis ajouter des zéros, par exemple:
is.na(distances) + 0L # if you don't have `NA` values in your matrix
Ou juste
(!distances) + 0L # if you don"t have zeroes in your matrix
Si vous pouvez avoir une valeur nulle ou NA
dans la matrice, row(distances)
(ou col(distances)
) ne:
is.na(row(distances)) + 0L
(!row(distances)) + 0L
Et on peut forcer la matrice entière à être des valeurs NA
, comme un moyen de produire une matrice de 1
, Puis soustraire 1
:
is.na(distances + NA) - 1L
Ou juste pour le plaisir
(distances == "Klausos Klausos") + 0L # if you don't have your name as one of the values
Une autre méthode (un peu maladroite) utiliserait dim<-
`dim<-`(rep_len(0L, length(distances)), dim(distances))
Vous pouvez simplement entrer
matrix( rep( 0, len=25), nrow = 5)
Cela devrait fonctionner comme souhaité.
Edit: J'ai fait une petite erreur (voir commentaire) et l'ai corrigée.