2015-01-19 9 views

Antwort

24

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)) 
+1

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". –

+1

@docendodiscimus Sie können kostenlos beitragen, dies ist eine Wiki-Antwort. –

1

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.

+0

Sie haben Recht. Ich habe meine Antwort entsprechend geändert. – bonnaix

0

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) 
+1

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

Verwandte Themen