2013-01-22 12 views
10

Ich habe einen Datenrahmen "Killer" mit 3 Variablen erstellt. Die Daten sind numerisch, obwohl es Werte gibt.Wie wird na.rm = TRUE an sapply übergeben, wenn der Median berechnet wird?

Mein Ziel ist es, den Mittelwert für jede der 3 Variablen zu berechnen.

sapply(killers, function(x) median) 

Das gibt:

$heartattack 
function (x, na.rm = FALSE) 
UseMethod("median") 
<bytecode: 0x103748108> 
<environment: namespace:stats> 

Ich weiß, dass das na.rm Argument ein Mittel NA Werte zu ignorieren ist. Da na.rm = FALSE in dem existiert, was von R zurückgegeben wurde, wird angenommen, dass es eine Möglichkeit gibt, dies innerhalb der obigen Codezeile auf TRUE zu setzen. Ich habe versucht, ein paar Variationen:

sapply(killers, na.rm=TRUE function(x) median) 
sapply(killers, function(x) median, na.rm=TRUE) 
sapply(killers, function(x) median(na.rm=TRUE)) 

Ich bin nicht sicher, ob ich bin in der Nähe oder wenn dies wird Verschachtelung Funktionen einzubinden, da pro ähnlichen (wenn auch letztlich nicht hilfreich in diesem Fall, dass ich sehen kann) Beiträge zum Thema SO. z.B. How to pass na.rm as argument to tapply?, Ignore NA's in sapply function

Natürlich könnte ich auf jeden Vektor den Mittelwert berechnen nur die verwendet wurde, Killer zu schaffen, aber sicher, wenn, was ich frage möglich ist, dann ist das besser.

+3

'sapply' sagt? "...: optionale Argumente 'FUN'." und es gibt Beispiele dafür, wie zusätzliche Argumente an Funktionen im Abschnitt * Examples * übergeben werden. –

+0

@JoshuaUlrich sollte nicht so offensiv sein. –

+2

Sie haben 'sapply' gebeten, die Funktion' median' zurückzugeben, und genau das hat es getan. Funktionen sind Objekte. (Was Sie nicht getan haben, war, dass es 'median (x)' zurückgibt.) –

Antwort

27

Just do:

sapply(killers, median, na.rm = TRUE) 

Eine Alternative wäre (auf dem Code basiert) werden

sapply(killers, function(x) median(x, na.rm=TRUE)) 
Verwandte Themen