18 votes

Comment passer na.rm=TRUE à sapply lors du calcul de la médiane ?

J'ai créé un dataframe "killers" avec 3 variables. Les données sont numériques bien qu'il existe des NA dans l'ensemble de l'Union.

Mon objectif est de calculer la moyenne de chacune des 3 variables.

sapply(killers, function(x) median)

Cela renvoie :

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

Je sais que la na.rm L'argument est un moyen d'ignorer NA valeurs. Puisque na.rm = FALSE existe dans ce qui a été retourné par R, on suppose qu'il y a un moyen de le mettre à TRUE dans la ligne de code ci-dessus. J'ai essayé plusieurs variantes :

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

Je ne sais pas si je suis proche du but ou si cela va impliquer l'imbrication de fonctions, comme dans d'autres posts similaires (mais finalement pas utiles dans ce cas, d'après ce que je peux voir) sur le sujet sur SO. par exemple. Comment passer na.rm comme argument à tapply ? , Ignorer les NA dans la fonction sapply

Bien sûr, je pourrais simplement calculer la moyenne de chaque vecteur utilisé pour créer des tueurs, mais si ce que je demande est possible, c'est certainement mieux.

42voto

Jilber Points 22709

Il suffit de le faire :

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

Une alternative serait (sur la base de votre code)

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X