Ho bisogno di riempire le distanze di matrice con 0. Come posso fare questo?Come riempire una matrice con zero (0)
distances <- matrix(1:25, nrow=5, ncol=5)
apply(distances, c(1, 2), function(x) 0)
Ho bisogno di riempire le distanze di matrice con 0. Come posso fare questo?Come riempire una matrice con zero (0)
distances <- matrix(1:25, nrow=5, ncol=5)
apply(distances, c(1, 2), function(x) 0)
mi limiterò a messo qui come ci sono mucchio di risposte simpatiche nei commenti
Si potrebbe creare un intero nuova matrice con le dimensioni della vostra vecchia matrice
matrix(0L, nrow = dim(distances)[1], ncol = dim(distances)[2]) # @nrussell
Or , allo stesso modo, per risparmiare alcune sequenze di tasti (perché un matrix
è un caso speciale di array
bidimensionale)
array(0L, dim(distances)) # @alexis_laz
Oppure si potrebbe preservare la struttura del vecchio matrice utilizzando []
e riempirlo con zeri
distances[] <- 0L # @Richard
Oppure si potrebbe semplicemente moltiplicare tutti i valori per zero
distances*0L # @akrun
O più generale soluzione sarebbe che avrà nella conta NA
casi troppo (perché ogni numero in potere di zero è pari sempre a 1)
distances^0L - 1L # @docendodiscimus
.210
O alcune delle mie cose: Si potrebbe convertire la matrice a una matrice logica in vari modi e quindi aggiungere zeri, per esempio:
is.na(distances) + 0L # if you don't have `NA` values in your matrix
O semplicemente
(!distances) + 0L # if you don"t have zeroes in your matrix
Se si potrebbe avere zero o NA
valore nella matrice, row(distances)
(o col(distances)
) non:
is.na(row(distances)) + 0L
(!row(distances)) + 0L
e si può forzare l'intera matrice di essere NA
valori, come un modo per produrre una matrice di 1
's, quindi sottrarre 1
:
is.na(distances + NA) - 1L
O solo per divertimento
(distances == "Klausos Klausos") + 0L # if you don't have your name as one of the values
Altro (un po' scomodo metodo) sarebbe utilizzando dim<-
`dim<-`(rep_len(0L, length(distances)), dim(distances))
Se stai andando a raccogliere tutti i tipi di modi, puoi anche fare' distanze^0L - 1L'. Nota che questo convertirà anche gli AN, se presenti, a 0, diversamente dalle distanze * 0L'. –
@docendodiscimus sei libero di contribuire, questa è una risposta wiki. –
Si potrebbe semplicemente digitare
matrix(rep(0, len=25), nrow = 5)
Questo dovrebbe funzionare come desiderato.
Modifica: Ho fatto un piccolo errore (vedi commento) e l'ho corretto.
Hai ragione. Ho cambiato la mia risposta di conseguenza. – bonnaix
Questo è il codice che uso per la matrice non quadrata! esempio è per una matrice 4 X 6
matrix(rep(0,4*6),nrow=4,ncol=6)
Il 'rep' non è necessario. 'matrix (0, nrow = 4, ncol = 6)' funziona bene. (Proprio come nel commento principale sulla domanda, o la prima riga di codice della risposta accettata.) R ricicla lo 0 come necessario. – Gregor
'matrice (0, nrow = 5, ncol = 5)' ' – nrussell
distanze [] <- 0L' –
O' 0 '* distanze – akrun