Ich muss Matrix Entfernungen mit 0 füllen. Wie kann ich das tun?Wie fülle ich eine Matrix mit Null (0)
distances <- matrix(1:25, nrow=5, ncol=5)
apply(distances, c(1, 2), function(x) 0)
Ich muss Matrix Entfernungen mit 0 füllen. Wie kann ich das tun?Wie fülle ich eine Matrix mit Null (0)
distances <- matrix(1:25, nrow=5, ncol=5)
apply(distances, c(1, 2), function(x) 0)
Ich werde es nur hier setzen, wie es Haufen nette Antworten in den Kommentaren
Sie sind eine ganz neue Matrix mit den Dimensionen Ihrer alten Matrix
matrix(0L, nrow = dim(distances)[1], ncol = dim(distances)[2]) # @nrussell
schaffen könnte Or ähnlich, um ein paar Tastenanschläge zu speichern (weil ein matrix
ein Spezialfall von zweidimensionalen array
ist)
array(0L, dim(distances)) # @alexis_laz
Oder Sie könnten die Struktur Ihrer alten Matrix mit []
und füllen es mit Nullen
distances[] <- 0L # @Richard
bewahren Oder Sie könnten einfach alle Werte multiplizieren durch Null
distances*0L # @akrun
Oder allgemeinere Lösung wäre, die nimmt auch die Anzahl NA
Fälle auf (weil jede Zahl in der Potenz von Null immer gleich 1 ist)
distances^0L - 1L # @docendodiscimus
Oder einige meiner Sachen: Sie könnten Ihre Matrix auf eine logische Matrix in einer verschiedenen Art und Weise umwandeln und dann Nullen hinzufügen, zum Beispiel:
is.na(distances) + 0L # if you don't have `NA` values in your matrix
Oder nur
(!distances) + 0L # if you don"t have zeroes in your matrix
Wenn Sie haben könnten Null oder NA
Wert in der Matrix, row(distances)
(oder col(distances)
) wird nicht:
is.na(row(distances)) + 0L
(!row(distances)) + 0L
und man kann die gesamte Matrix zwingt NA
Werte zu sein, als eine Möglichkeit, eine Matrix von 1
‚s zu produzieren, subtrahieren dann 1
:
is.na(distances + NA) - 1L
Oder einfach nur zum Spaß
(distances == "Klausos Klausos") + 0L # if you don't have your name as one of the values
Weitere (etwas umständlich) Verfahren unter Verwendung wäre dim<-
`dim<-`(rep_len(0L, length(distances)), dim(distances))
Wenn Sie alle möglichen Arten sammeln wollen, können Sie auch' distances^0L - 1L' verwenden. Beachten Sie, dass dies auch, falls vorhanden, die NAs in 0s umwandelt, im Gegensatz zu "distances * 0L". –
@docendodiscimus Sie können kostenlos beitragen, dies ist eine Wiki-Antwort. –
Sie einfach eingeben könnte
matrix(rep(0, len=25), nrow = 5)
Dies sollte wie gewünscht funktionieren.
Edit: Ich machte einen kleinen Fehler (siehe Kommentar) und habe es korrigiert.
Sie haben Recht. Ich habe meine Antwort entsprechend geändert. – bonnaix
Dies ist der Code, den ich für nicht quadratische Matrix verwende! Beispiel ist für eine 4 x 6 Matrix
matrix(rep(0,4*6),nrow=4,ncol=6)
Der 'rep' ist nicht notwendig. 'Matrix (0, nrow = 4, ncol = 6)' funktioniert gut. (Wie im oberen Kommentar zu der Frage oder in der ersten Codezeile der angenommenen Antwort.) R wird die 0 bei Bedarf wiederverwenden. – Gregor
'Matrix (0, nRow = 5, NcoI = 5)' ' – nrussell
Abstände [] <- 0L' –
oder '0' * Entfernungen – akrun