Je souhaite normaliser les colonnes sélectionnées d'une trame de données par une normalisation définie par l'utilisateur. Jusqu'ici je vais avecComment passer une tranche de données à une fonction d'histogramme pour la normalisation de mode dans R?
library(tidyr)
library(ggplot2)
Mode <- function(x, na.rm = TRUE) {
x <- lapply(x, as.numeric)
distribution <- hist(x, breaks = 50, plot = FALSE)
distribution$mids[which.max(distribution$counts)]
}
data_normalised <- lapply(mtcars[,-9:-12], function(x) {(x-Mode(x))/(sd(x))})
comme exemple minimal. Cependant, hist se plaint que "x doit être numérique". Je pensais que cela pourrait être résolu par coulée
x <- lapply(x, as.numeric)
qui ne fonctionne pas. Je sais que hist travaille pour
hist(mtcars[[3]])
mais je ne peux pas trouver un moyen de combiner le découpage df et la fonction hist, comme
hist(mtcars[[-9:-12]])
ne fonctionnera pas huitard.
Idéellement, je voudrais que la fonction Mode() fonctionne comme la fonction sd(). Prenez une colonne df et redonnez une valeur.
Merci pour votre aide!
Votre fonction 'Mode' ne renvoie rien; vous devriez ajouter 'return() 'et la valeur qui vous intéresse, avant de terminer la fonction. – R18