Нормализовать значения в матрице R

Lasha Khintibidze 30 Январь 2023 14 Июль 2021
  1. Используйте функцию sweep, чтобы развернуть массивы в R
  2. Используйте функцию scale для нормализации значений в матрице R
Нормализовать значения в матрице R

В этой статье будет рассказано, как нормализовать значения в матрице R.

Используйте функцию sweep, чтобы развернуть массивы в R

Функция sweep используется для удаления итоговой статистики из массива. Он принимает входной массив в качестве первого аргумента и сводную статистику в качестве третьего аргумента. Второй аргумент функции представляет собой вектор индексов, которые должны соответствовать элементам третьего вектора аргумента. Четвертый аргумент обозначает функцию, которая используется для очистки массива. В этом случае мы передаем оператор деления, который может быть снабжен обозначением в кавычках - "/". Функция возвращает массив той же формы, что и входной массив. Мы используем функцию colSums, чтобы вычислить суммы столбцов заданного входного массива и передать результат как сводную статистику.

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

Выход:

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

Обратите внимание, что функция sweep также может иметь значение параметра функции по умолчанию. Если пользователь не предоставляет его явно, предполагается, что функция является оператором вычитания. Помните, что при передаче объекта настраиваемой функции у него должно быть два аргумента. Следующий фрагмент кода вычитает медианное значение каждого столбца из элементов в соответствующем столбце матрицы.

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)

Выход:

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

Используйте функцию scale для нормализации значений в матрице R

Еще одна полезная функция для нормализации данных матрицы - scale, которая делит каждый столбец входной матрицы на соответствующее значение из третьего аргумента с именем scale. Обратите внимание, что scale принимает аргумент center, который используется для центрирования столбца (более подробную информацию можно найти на этой странице). В этом случае мы присваиваем последнему аргументу FALSE, указывая на то, что центрирование столбца выполнять не нужно. Функция colSums используется для вычисления сумм для каждого столбца входной матрицы и передачи ее в качестве аргумента 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)

Выход:

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

Сопутствующая статья - R Matrix