《R语言编程艺术》——3.6 避免意外降维

简介: 本节书摘来自华章计算机《R语言编程艺术》一书中的第3章,第3.6节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.6 避免意外降维

在统计学领域,“降维”(dimension reduction)是有益的,也存在很多降维的统计学方法。假设我们需要处理10个变量,如果能把变量个数降到3,却还能保留数据的主要信息,何乐而不为呢?
但是在R里,降维指的完全是另外一件事情,而且通常要避免。比如我们有一个4行的矩阵,提取其中的一行:
image

这个看似没有问题,但是注意看r的显示格式,是向量的格式,而非矩阵的格式。也就是说,r是一个长度为2的向量,而不是一个1乘2的矩阵。我们可以用几种方法来验证它的确已经变成向量了:
image

可以看到z是有行数与列数的,但是r没有。类似的,str()显示z的行索引区间为1:4,列索引区间为1:2。而r的索引区间是1:2。毫无疑问,r是一个向量而非矩阵。
把r变成向量看似没有问题,但在某些涉及大量矩阵操作的程序中会引起错误。也许程序在大部分情况下都能正常运行,但在少数情况下就是通不过。例如某个程序从一个给定的矩阵里提取一个子矩阵,然后对这个子矩阵进行一些矩阵操作。如果这个子矩阵只有一行,R会把它当作向量处理,后面的矩阵操作无法运行在这个向量上,程序会出错。
幸好R里有办法禁止矩阵自动减少维度:使用drop参数。仍以上述矩阵z为例:
image

现在r是一个1乘以2的矩阵而非由两元素组成的向量。
因此,需要经常性地在矩阵操作代码里使用参数drop=FALSE。
为什么说drop是一个参数呢?因为 [ 事实上也是一个函数,跟+等操作符一样。请看以下代码:

image

相关文章
|
6月前
|
机器学习/深度学习 数据采集 编解码
数据分享|R语言PCA主成分、lasso、岭回归降维分析近年来各国土地面积变化影响
数据分享|R语言PCA主成分、lasso、岭回归降维分析近年来各国土地面积变化影响
|
6月前
|
前端开发 数据建模 计算机视觉
R语言主成分回归(PCR)、 多元线性回归特征降维分析光谱数据和汽车油耗、性能数据
R语言主成分回归(PCR)、 多元线性回归特征降维分析光谱数据和汽车油耗、性能数据
|
6月前
|
机器学习/深度学习 数据可视化 算法
R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告
R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告
|
IDE 开发工具
《R语言编程艺术》——导读
避免显式迭代是R语言的一个常见话题,这对于函数式编程语言来说是很典型的问题。你可以利用R的函数特性把迭代行为表达成隐式的,而不是用循环语句。这可以让代码执行起来更有效率,当R运行在大数据集上时运行时间会相差很大。
1948 0
《R语言编程艺术》——3.8 高维数组
本节书摘来自华章计算机《R语言编程艺术》一书中的第3章,第3.8节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1460 0
《R语言编程艺术》——3.7 矩阵的行和列的命名问题
本节书摘来自华章计算机《R语言编程艺术》一书中的第3章,第3.7节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1743 0
《R语言编程艺术》——3.5 向量与矩阵的差异
本节书摘来自华章计算机《R语言编程艺术》一书中的第3章,第3.5节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1096 0
|
索引
《R语言编程艺术》——3.4 增加或删除矩阵的行或列
本节书摘来自华章计算机《R语言编程艺术》一书中的第3章,第3.4节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
5259 0
《R语言编程艺术》——3.3 对矩阵的行和列调用函数
本节书摘来自华章计算机《R语言编程艺术》一书中的第3章,第3.3节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3278 0
|
存储 索引
《R语言编程艺术》——3.2 一般矩阵运算
本节书摘来自华章计算机《R语言编程艺术》一书中的第3章,第3.2节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2271 0