下面通过例子来了解这些函数的用法:
我们知道,通过下标索引 [i, j] 可以访问矩阵的某一部分,索引如果没有提供意味着“所有行”或“所有列”。来看个例子,比如:
在R中,可以用一些特殊的函数来进行矩阵的行、列计算。来看些例子:
上述矩阵的行、列计算,还可以使用 apply() 函数来实现。 apply() 函数的原型为 apply(X, MARGIN, FUN, ...) ,其中: X 为矩阵或数组; MARGIN 用来指定是对行运算还是对列运算, MARGIN=1 表示对行运算, MARGIN=2 表示对列运算; FUN 用来指定运算函数; ... 用来指定 FUN 中需要的其它参数。来看些例子:
用 apply() 函数来实现上面的例子
apply() 函数功能很强大,我们可以对矩阵的行或列进行其它运算,例如:
如果矩阵存在 NA 值,可通过设置 na.rm=TRUE 来忽略 NA 值,然后再计算。比如:
甚至我们还可以自定义运算函数,来看个例子:
在R中, rbind() 和 cbind() 函数可分别为矩阵添加行和列,来看一个例子:
在R中, row() 和 col() 函数将分别返回元素的行和列下标矩阵,来看个例子:
通过这两个函数,可以获取矩阵的对角元素以及上下三角矩阵,例如:
有时,你可能需要对每行进行分组,然后组内每列求和。在R中可以用 rowsum() 函数来解决,而且效率也非常高。先看个例子:
你也可以用 aggregate() 函数获得类似结果:
有人就会问“为啥没有列分组求和的操作?”,其实你可以先将矩阵转置,然后行分组求和;这两步就等同于列分组求和。
sweep() 函数的原型为 sweep(x, MARGIN, STATS, FUN = "-", check.margin = TRUE, ...) ,其中: x 为矩阵或数组; MARGIN 用来指定是对行运算还是对列运算, MARGIN=1 表示对行运算, MARGIN=2 表示对列运算; STATS 表示想要清除的统计量; FUN 用来指定运算函数,默认为减法 - ; check.margin 用来核实 x 的维度是否与 STATS 的匹配,如果事先知道它们匹配的话,将其设为 FALSE 将提高运算速度; ... 用来指定 FUN 中需要的其它参数。来看些例子:
事实上,通过改变 FUN 参数的具体形式或自定义函数, sweep() 函数可以实现很多不同操作,这里就不细讲了。
max.col() 函数返回矩阵每行最大值所在的列位置(即列下标),其原型为 max.col(m, ties.method = c("random", "first", "last")) ,其中: m 为矩阵;当存在多个最大值时, ties.method 指定用哪种方式来处理这种情况,默认为"random"(随机),"first"指使用第一个最大值,"last"指使用最后一个最大值。来看个官网例子:
我们也可以结合 apply() 和 which.max() 函数来实现 max.col(mm, 'first') 。看个例子,
R矩阵的最后一部分内容就讲到这。
如若有遗漏,后期将会添加至本博客。
1、先在R中创建简单的矩阵,取名为my_matrix
2、现在对每一行进行求和,要使用到apply函数。apply族函数有很多,在平常的使用中,用到最多的就是tapply函数,第一个参数x是数据;第二个参数index是索引,就比如是分组的标准,第三个参数fun也就是要用到的函数。
3、对于tapply函数调用R本身自带的数据airquality,现在计算按照Month来分组,每一个Month中Solar.R的均值
4、上图中Month等于5和8时,Solar.R的均值为NA,这说明在原数据中存在NA的情况。而且在指定数据的时候比较麻烦,可以使用with函数来简化代码量
5、矩阵与矩阵之间的运算,比如加法,减法
6、矩阵相乘需要使用%*%符号
R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
转置矩阵就是把原矩阵第m行n列位置的数换到第n行m列。比如1 2 3 4 5
6 7 8 9 0
的转置矩阵就是
1 6
2 7
3 8
4 9
5 0
就是这样的
求行列式的值
行列式的计算
一 化成三角形行列式法
先把行列式的某一行(列)全部化为 1 ,再利用该行(列)把行列式化为三角形行列式,从而求出它的值,这是因为所求行列式有如下特点: 1 各行元素之和相等; 2 各列元素除一个以外也相等。
充分利用行列式的特点化简行列式是很重要的。
二 降阶法
根据行列式的特点,利用行列式性质把某行(列)化成只含一个非零元素,然后按该行(列)展开。展开一次,行列式降低一阶,对于阶数不高的数字行列式本法有效。
三 拆成行列式之和(积)
把一个复杂的行列式简化成两个较为简单的。
四 利用范德蒙行列式
根据行列式的特点,适当变形(利用行列式的性质——如:提取公因式;互换两行(列);一行乘以适当的数加到另一行(列)去; ...) 把所求行列式化成已知的或简单的形式。其中范德蒙行列式就是一种。这种变形法是计算行列式最常用的方法。
五 加边法
要求:1 保持原行列式的值不变; 2 新行列式的值容易计算。根据需要和原行列式的特点选取所加的行和列。加边法适用于某一行(列)有一个相同的字母外,也可用于其第 列(行)的元素分别为 n-1 个元素的倍数的情况。
六 综合法
计算行列式的方法很多,也比较灵活,总的原则是:充分利用所求行列式的特点,运用行列式性质及上述常用的方法,有时综合运用以上方法可以更简便的求出行列式的值;有时也可用多种方法求出行列式的值。
七 行列式的定义
一般情况下不用。