Normalizza i valori nella matrice R
-
Utilizzare la funzione
sweep
per eliminare gli array in R -
Usa la funzione
scale
per normalizzare i valori nella matrice R
Questo articolo introdurrà come normalizzare i valori in una matrice R.
Utilizzare la funzione sweep
per eliminare gli array in R
La funzione sweep
viene utilizzata per eliminare la statistica di riepilogo dall’array. Prende l’array di input come primo argomento e la statistica di riepilogo come terzo argomento. Il secondo argomento della funzione rappresenta il vettore degli indici che devono corrispondere agli elementi del terzo vettore argomento. Il quarto argomento denota la funzione utilizzata per spazzare via l’array. In questo caso, passiamo all’operatore di divisione, che può essere fornito con la notazione tra virgolette - "/"
. La funzione restituisce la matrice con la stessa forma della matrice di input. Utilizziamo la funzione colSums
per calcolare le somme delle colonne dell’array di input dato e passare il risultato come statistica di riepilogo.
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 = "/")
Produzione:
[,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
Si noti che la funzione sweep
può anche con il valore predefinito del parametro funzione. Se l’utente non lo fornisce esplicitamente, si presume che la funzione sia l’operatore di sottrazione. Tieni presente che quando viene passato l’oggetto funzione personalizzata, dovrebbe avere due argomenti. Il seguente frammento di codice sottrae la mediana di ogni colonna dagli elementi nella colonna corrispondente della matrice.
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)
Produzione:
[,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
Usa la funzione scale
per normalizzare i valori nella matrice R
Un’altra funzione utile per la normalizzazione dei dati della matrice è scale
, che divide ogni colonna della matrice di input per il valore corrispondente dal terzo argomento denominato - scale
. Nota che scale
accetta l’argomento center
utilizzato per il centraggio delle colonne (maggiori dettagli possono essere trovati in questa pagina). In questo caso, assegniamo FALSE
a quest’ultimo argomento, indicando che non è necessario eseguire il centraggio della colonna. La funzione colSums
viene utilizzata per calcolare le somme per ogni colonna della matrice di input e passarla come argomento scale
.
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)
Produzione:
[,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