2016-07-12 22 views
0

ich diese Funktion in R zu schaffen, die Normalisierung schaffen. In data2, YearlyIncome Spalte hat große Differenz vom niedrigsten Wert zum höchsten Wert. Ich möchte Normalisierung convert Wert von 0 bis 1Funktion Fehler in R, nicht-numerisches Argument Binäroperators

Die Wertewerte Funktion gelten YearlyIncome überschrieben.

> x <- data2$YearlyIncome 
> a <- min(x) 
> b <- max(x) 
> fun <- function(x){ (x - a)/(b - a) } 
> fun(data$YearlyIncome) 
Error in data$YearlyIncome : object of type 'closure' is not subsettable 
> fun <- function(x){ (x - min(x))/(max(x) - min(x)) } 
> fun(data2[1]) 
Show Traceback 

Rerun with Debug 
Error in FUN(X[[i]], ...) : 
    only defined on a data frame with all numeric variables 
But I got this error: 
>Error in x - a : non-numeric argument to binary operator 

Was mache ich jetzt?

+2

Ich antwortete nur diese Frage per E-Mail, hat es beheben nicht Ihr Problem? Zeigen Sie uns den vollständigen 'data2' Datenrahmen. –

+1

Ich würde 'fun (data2 [, 1])' verwenden, da 'data2 [1]' immer noch ein data.frame ist. Überprüfen Sie auch die 'str (data2)', um zu sehen, ob die erste Spalte eine numerische Variable ist. Ich habe mit einem Beispiel Daten getestet und es funktioniert für mich. – akrun

+0

@akun so akun können Sie Ihre Antwort ändern, um meine alten Fehler zu ersetzen? wie ich gerade verloren bin, was sollte sein, nachdem ich meine Funktion definieren Spaß <- Funktion (x) {(x - min (x))/(max (x) - min (x))}? – Lee

Antwort

0

Hier werden subsetting wir die erste Spalte. Die apply wird dafür nicht benötigt.

fun(data$YearlyIncome) 

wo

fun <- function(x){ (x - min(x))/(max(x) - min(x)) } 
+0

leid, dass ich immer noch die folgende Fehlermeldung erhalten:> help ("read.csv") > read.csv > Daten2 <- read.csv (file.choose(), Kopf = TRUE) > Optionen (max.print = 1000000) > x <- Daten2 $ YearlyIncome > a <- min (x) > b <- max (x) > Spaß <- function (x) {(x - a)/(b - a)} > Ansicht (Spaß) > YearlyIncome <- apply (data2 [1], 2, fun) Fehler in x - a: nicht numerisches Argument zum binären Operator – Lee

+0

@Lee Wie bereits erwähnt, wenn Sie eine einzelne Spalte 'data2 [1]' 'verwenden, wird apply nicht funktionieren und wird nicht benötigt. – akrun

+0

@akun also für den letzten Schritt was mache ich, nur YearlyIncome <- (data2 [1], 2, fun). Entschuldigung, aber kannst du bitte eine Antwort in den letzten 4 Schritten schreiben? Ich verspreche, ich werde es akzeptieren. Nur ein Anfänger hier. – Lee