R:向量和矩阵的线性代数运算
来源:互联网 发布:爱剪辑软件下载 编辑:程序博客网 时间:2024/05/16 00:38
向量乘以标量可以直接运算,如下所示:
> y <- c( 1, 3, 6, 10 )
> 2 * y
[1] 2 6 12 20
如果想计算两个向量的内积(也就是点积),可以使用crossprod()命令。
> crossprod( 1:3, c( 5, 12, 13 ) )
[,1]
[1,] 68
数学意义上的矩阵乘法,要使用运算符“%*%”。
> a <- matrix( c( 1, 3, 2, 4 ), nrow=2 )
> b <- matrix( c( 1, 0, -1, 1 ), nrow=2 )
> a %*% b
[,1] [,2]
[1,] 1 1
[2,] 3 1
函数solve()可以解线性方程组,还可以求矩阵的逆矩阵。
> a <- matrix( c( 1, 1, -1, 1 ), nrow=2, ncol=2 )
> b <- c( 2, 4 )
> solve( a, b ) #求解线性方程组
[1] 3 1
> solve( a ) #第二个参数省略表示计算矩阵的逆
[,1] [,2]
[1,] 0.5 0.5
[2,] -0.5 0.5
下面是一些其他线性代数运算符:
Ю t():矩阵的转置
Ю qr():QR分解
Ю chol():Cholesky分解
Ю det():矩阵的行列式值
Ю eigen():矩阵的特征值和特征向量
Ю diag():从方阵中提出对角矩阵(有利于从协方差矩阵中得到方差和构建对角矩阵)
Ю sweep():数值分析批量运算符
需要注意的是diag()函数的两用型:如果它的参数是一个矩阵,它返回的是一个向量,反之亦然;同样的,如果它的参数是一个标量,那么这个函数返回指定大小的单位矩阵。
> m <- matrix( c( 1, 7, 2, 8 ), nrow=2 )
> dm <- diag( m )
> dm
[1] 1 8
> diag( dm )
[,1] [,2]
[1,] 1 0
[2,] 0 8
> diag( 3 )
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
函数sweep()可以做比较复杂的运算。下面的例子实现了第一行都加1,第二行都加4,第三行都加7:
> m <- matrix( c( 1, 4, 7, 2, 5, 8, 3, 6, 9 ), nrow=3 )
> sweep( m, 1, c( 1, 4, 7 ), "+" )
[,1] [,2] [,3]
[1,] 2 3 4
[2,] 8 9 10
[3,] 14 15 16
sweep()函数中的前两个参数类似于apply()中的参数:数组和方向。上面的例子中,方向是1,表示按行运算。sweep()函数中的第四个参数表示的是要使用的函数。
- R:向量和矩阵的线性代数运算
- R向量矩阵运算
- 线性代数 02.02 矩阵的运算
- R:常用的向量运算
- R的矩阵运算
- 比较R语言和集算器的向量运算
- 线性代数的本质--对线性空间、向量和矩阵的直觉描述
- MIT18.06线性代数课程笔记1:矩阵和向量相乘的三种解释
- 【线性代数】分块矩阵的运算、特征值
- 线性代数:置换、转置矩阵和向量空间
- 线性代数学习1 标量、向量、矩阵和张量
- 线性代数 矩阵及其运算
- 线性代数4-矩阵运算
- 线性代数入门(2) - 矩阵,向量
- 线性代数复习分析(向量组与矩阵的秩)
- R语言向量_标量、向量、数组和矩阵
- 线性代数学习点(五):向量运算规则的几何表示
- IOS中的矩阵和向量运算
- 【apache solr系列】jcseg与pinyinTokenFilter实现中文缩写查找
- 关于win8下wampserver登陆phpmyadmin403Forbidden的解决方案
- 虚拟机网卡与配置文件不匹配 Device eth0 does not seem to bepresent
- linux c 字符串处理
- android 用JSON去服务器获取JSON对象 和其他的几种方法去服务器获取JSON对象
- R:向量和矩阵的线性代数运算
- ZooKeeper快速搭建
- Hadoop2.2.0环境下Sqoop1.99.3安装
- Android Studio 如何引入jar包?
- TCP 滑动窗口和拥塞窗口
- C++编译错误中英文对照
- 马云又挖走长江商学院一名副院长,蚂蚁金融步步为营
- php和j2ee那个更有发展?谈下个人的看法
- Android UI线程和非UI线程