Ich schrieb Notizen zu vergleichen apply() und sweep() und entdeckte die folgenden seltsamen Unterschiede. Um das gleiche Ergebnis zu erzeugen, benötigt sweep() MARGIN = 1, während apply will MARGIN = 2. Auch das Argument, das die Matrix angibt, ist Großbuchstaben X in apply(), Kleinbuchstaben in sweep().apply() vs. sweep() in R
my.matrix <- matrix(seq(1,9,1), nrow=3)
row.sums <- rowSums(my.matrix)
apply.matrix <- apply(X = my.matrix, MARGIN = 2, FUN = function (x) x/row.sums)
sweep.matrix <- sweep(x = my.matrix, MARGIN = 1, STATS = rowSums(my.matrix), FUN="/")
apply.matrix - sweep.matrix ##yup same matrix
Ist nicht Sweep() eine "Anwendungstyp" -Funktion? Ist das nur ein weiterer Fehler oder habe ich meinen Verstand verloren?
Was ist Ihre Frage, d. H. Was genau ist nach dem Lesen der Dokumentation unklar? – Roland
Frage: Haben zwei eng verwandte Funktionen tatsächlich unterschiedliche Syntax für dasselbe Problem? –
Beachten Sie, dass R über eine lange Zeit entwickelt wurde und R-Core sehr darauf achtet, den bestehenden Code nicht zu zerstören. Beide Funktionen sind wahrscheinlich ein Vermächtnis von S und Kompatibilität mit S/S-PLUS war in den frühen Tagen ein großes Problem. – Roland