Normalisieren Sie die Werte in der Matrix R
-
Verwendung von die Funktion
sweep
zum Sweepen von Arrays in R -
Verwenden Sie die Funktion
scale
, um die Werte in der R-Matrix zu normalisieren
In diesem Artikel wird vorgestellt, wie die Werte in einer R-Matrix normalisiert werden.
Verwendung von die Funktion sweep
zum Sweepen von Arrays in R
Die Funktion sweep
wird verwendet, um die zusammenfassende Statistik aus dem Array auszulesen. Es verwendet das Eingabearray als erstes Argument und die Zusammenfassungsstatistik als drittes Argument. Das zweite Argument der Funktion stellt den Vektor der Indizes dar, die den Elementen des dritten Argumentvektors entsprechen müssen. Das vierte Argument bezeichnet die Funktion, die verwendet wird, um das Array auszuräumen. In diesem Fall übergeben wir den Divisionsoperator, der mit Anführungszeichen versehen werden kann - "/"
. Die Funktion gibt das Array mit derselben Form wie das Eingabearray zurück. Wir verwenden die Funktion colSums
, um die Spaltensummen des angegebenen Eingabearrays zu berechnen und das Ergebnis als zusammenfassende Statistik zu übergeben.
require(stats)
v1 <- c(1.1, 1.2, 4.3, 1.3, 3.9, 2.1, 5.3, 3.8, 7.7, 8.8, 6.7, 2.6)
m1 <- matrix(v1, ncol = 4)
sweep(m1, 2, colSums(m1), FUN = "/")
Ausgabe:
[,1] [,2] [,3] [,4]
[1,] 0.1666667 0.1780822 0.3154762 0.4861878
[2,] 0.1818182 0.5342466 0.2261905 0.3701657
[3,] 0.6515152 0.2876712 0.4583333 0.1436464
Beachten Sie, dass die Funktion sweep
auch mit dem Standardwert des Funktionsparameters möglich ist. Wenn der Benutzer sie nicht explizit angibt, wird angenommen, dass die Funktion der Subtraktionsoperator ist. Beachten Sie, dass bei der Übergabe des benutzerdefinierten Funktionsobjekts zwei Argumente vorhanden sein sollten. Der folgende Codeausschnitt subtrahiert den Median jeder Spalte von den Elementen in der entsprechenden Spalte der Matrix.
require(stats)
v1 <- c(1.1, 1.2, 4.3, 1.3, 3.9, 2.1, 5.3, 3.8, 7.7, 8.8, 6.7, 2.6)
m1 <- matrix(v1, ncol = 4)
med.att <- apply(m1, 2, median)
sweep(m1, 2, med.att)
Ausgabe:
[,1] [,2] [,3] [,4]
[1,] -0.1 -0.8 0.0 2.1
[2,] 0.0 1.8 -1.5 0.0
[3,] 3.1 0.0 2.4 -4.1
Verwenden Sie die Funktion scale
, um die Werte in der R-Matrix zu normalisieren
Eine weitere nützliche Funktion für die Normalisierung von Matrixdaten ist scale
, die jede Spalte der Eingabematrix durch den entsprechenden Wert aus dem dritten Argument namens scale
dividiert. Beachten Sie, dass scale
das Argument center
verwendet, das für die Spaltenzentrierung verwendet wird (weitere Details finden Sie auf dieser Seite). In diesem Fall weisen wir dem letzteren Argument FALSE
zu, was darauf hinweist, dass die Spaltenzentrierung nicht durchgeführt werden muss. Mit der Funktion colSums
werden die Summen für jede Spalte der Eingabematrix berechnet und als scale
-Argument übergeben.
require(stats)
v1 <- c(1.1, 1.2, 4.3, 1.3, 3.9, 2.1, 5.3, 3.8, 7.7, 8.8, 6.7, 2.6)
m1 <- matrix(v1, ncol = 4)
c1 <- colSums(m1)
scale(m1, center = FALSE, scale = c1)
Ausgabe:
[,1] [,2] [,3] [,4]
[1,] 0.1666667 0.1780822 0.3154762 0.4861878
[2,] 0.1818182 0.5342466 0.2261905 0.3701657
[3,] 0.6515152 0.2876712 0.4583333 0.1436464
attr(,"scaled:scale")
[1] 6.6 7.3 16.8 18.1
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook