标准化矩阵 R 中的值
本文将介绍如何对 R 矩阵中的值进行归一化。
在 R 中使用 sweep
函数清除数组
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 中具有多个条件的函数向量化
发布时间:2023/03/21 浏览次数:64 分类:编程语言
-
一项常见的数据分析任务是根据同一行的其他列使用一个或多个条件创建或更新数据框列。 如果我们尝试使用 if 语句来执行此操作,则只会使用第一行来测试条件,并且会根据该行更
在 R 中读取 xlsx 文件
发布时间:2023/03/21 浏览次数:66 分类:编程语言
-
在这篇文章中,你将会了解到两个在 R 中读取 xlsx 文件的最完整和最容易使用的库:readxl 和 openxlsx。