Normalizar los valores en el array R

Jinku Hu 30 enero 2023
  1. Utilice la función de sweep para barrer matrices en R
  2. Utilice la función scale para normalizar los valores en el array R
Normalizar los valores en el array R

Este artículo presentará cómo normalizar los valores en un array R.

Utilice la función de sweep para barrer matrices en R

La función de sweep se utiliza para barrer la estadística de resumen del array. Toma el array de entrada como primer argumento y la estadística de resumen como tercer argumento. El segundo argumento de la función representa el vector de índices que deben corresponder a los elementos del tercer vector de argumento. El cuarto argumento denota la función que se usa para barrer el array. En este caso, pasamos el operador de división, que se puede proporcionar con la notación entre comillas - "/". La función devuelve el array con la misma forma que el array de entrada. Utilizamos la función colSums para calcular las sumas de las columnas del array de entrada dada y pasar el resultado como la estadística de resumen.

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 = "/")

Producción :

          [,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

Tenga en cuenta que, la función sweep también puede con el valor predeterminado del parámetro de función. Si el usuario no lo proporciona explícitamente, se supone que la función es el operador de resta. Tenga en cuenta que cuando se pasa el objeto de función personalizada, debe tener dos argumentos. El siguiente fragmento de código resta la mediana de cada columna de los elementos de la columna correspondiente del array.

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)

Producción :

     [,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

Utilice la función scale para normalizar los valores en el array R

Otra función útil para la normalización de datos matriciales es scale, que divide cada columna del array de entrada por el valor correspondiente del tercer argumento denominado - scale. Tenga en cuenta que scale toma el argumento center que se utiliza para el centrado de columnas (se pueden encontrar más detalles en esta página). En este caso, asignamos FALSE al último argumento, lo que indica que no es necesario centrar las columnas. La función colSums se utiliza para calcular las sumas de cada columna del array de entrada y pasarla como argumento 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)

Producción :

          [,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
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Artículo relacionado - R Matrix