当前位置: 首页 > news >正文

R学习-- 数组和矩阵

生成 4行5列的数组,逐列逐行赋值
x = array(1:20, dim= c(4,5))


根据已知向量生成二维数组
i = array(c(1:3,3:1,4:6,5:7), dim=c(3,4))
也可以调整行列顺序 (3行4列变为4行3列)
i = array (c(1:3,3:1,4:6,7:9), dim=c(4,3))


数组a元素作为索引值操作数组b
i为一个二维数组,x[i]为x[i[1,1]],x[i[1,2]]...x[i[1,n]]...x[i[2,1]],x[i[2,2]]...x[i[n,n]],例如
x[i] = 0 操作,就是将数组i中的元素取出为i[m,n],为x[i[m,n]]一一赋值,m∈[1,行数],n∈[1,列数]。


创建3*4矩阵,初始化每个元素为0
b = matrix(0,3,4)


向矩阵最后添加一列
b = cbind(b,1:3)


向矩阵最后添加一行
a = matrix(c(1:9),3,3)
a = rbind(a,c(9,9,9))


将一个数组强制转换成简单向量
vec=as.vector(a)
或者
vec=c(a)


矩阵(向量)相乘
crossprod(1:5,2:6)


创建表格
table(c(1:4), c(2:5))


基于数据向量与维度创建数组
z=array(c(1,2,3), dim=c(2,3,4))
基于数据向量<1,2,3>创建4组,3列两行的表格


动态调整维度
z=array(c(1,2,3), dim=c(2,3,4))
dim(z) = c(2,2,6)
z变成了6组,2列2行的表格


数组操作
a=array(c(1,2),dim=c(3,4))
b = 2*a+1


求向量a,b外积的函数
outer(c(1,2,3),c(3,2,1))  (等价于c(1,2,3)%o%c(3,2,1))


过程:
a :<1,2,3>  
b :
<
3
2
1
>
向量a与b的外积:


1*3, 1*2, 1*1
2*3, 2*2, 2*1
3*3, 3*2, 3*1


还可以把外积函数替换为其他函数(例如平方和)
outer(x,y,function(x,y)x*x+y*y)


使用plot绘制函数
例如y=x^2
x=c(1:20)
plot(x,x*x)


矩阵旋转
a = matrix(c(1,2,3,4,5,6,7,8),2,4)
b = aperm(a,c(2,1))
过程:
a :
[1 3 5 7]
[2 4 6 8]
aperm(a, c(2,1)):
[1 2]
[3 4]
[5 6]
[7 8]
aperm(a)等价于t(a)


矩阵相乘
a = matrix(c(1,2,3,4,5,6,7,8),2,4)
b = matrix(c(2,2,2,2),4,1)
x = a %*% b
以上将完成 2*4矩阵和4*1矩阵相乘


求方(矩)阵对角元素
a = matrix(c(1:9),3,3)
diag(a)
会取得 1,5,9


生成正太分布随机数
rnorm(10)


查看矩阵维数
a= matrix(c(1:4),2,2)
dim(a)
改变矩阵维
dim(a) = c(1,4)


求方阵的行列式的值
det(matrix(rnorm(9),3,3))


求值过程 (对角线展开):
[a(1,1), a(1,2), a(1,3)]
[a(2,1), a(2,2), a(2,3)]
[a(3,1), a(3,2), a(3,3)]
X = a(1,1)*a(2,2)*a(3,3)+a(2,1)*a(3,2)*a(1,3)+a(3,1)*a(2,3)*a(1,2)-a(1,3)*a(2,2)*a(3,1)-a(1,2)*a(2,1)*a(3,3)-a(1,1)*a(3,2)*a(2,3)


求逆矩阵
a = matrix(rnorm(9),3,3)
solve(a)
并非每个矩阵都可逆,弱为可逆矩阵,在初等变换的过程中,不会出现整行或整列全部为0的情况。
也可以用det函数来判断矩阵行列式的值,如果为0则不可逆。


求特征向量和特征值
a = matrix(c(1,2,1,2),2,2)
eigen(a)
eigen(a)$values
对于大型矩阵,可以只计算特征值
eigen(a, only.values = TRUE)$values


投影
a = matrix(c(1,2,1,2),2,2)
prod(a)


奇异值分解
svd(a)


根据已知向量计算最小二乘拟合
lsfit(c(1,2,3,4),c(2,3,4,3))
会求出直线的斜率和截距
对于本例:
Intercept(斜率)         X(截距) 
[1,]      -2.0 -5.0000000
[2,]       0.5 -2.2360680
[3,]       0.5  0.4472136
[4,]       0.5  0.8944272


实例 :
a = c(1,2,3,4)
b = c(1,3,4,5)
plot(a,b)
abline(lsfit(a,b))
或者 lm(a~b)




将矩阵QR分解。
Q:正交矩阵
R:上三角矩阵
a = matrix(c(1:9),3,3)
q = qr(a)
qr.Q(q)
           [,1]       [,2]       [,3]
[1,] -0.2672612  0.8728716  0.4082483
[2,] -0.5345225  0.2182179 -0.8164966
[3,] -0.8017837 -0.4364358  0.4082483


qr.R(q)
          [,1]      [,2]          [,3]
[1,] -3.741657 -8.552360 -1.336306e+01
[2,]  0.000000  1.963961  3.927922e+00
[3,]  0.000000  0.000000  1.776357e-15


另外,
> b <- qr.coef(Xplus, y)
> fit <- qr.fitted(Xplus, y)
> res <- qr.resid(Xplus, y)
会返回qr分解的系数,拟合和残差。

相关文章:

  • spinlock与linux内核调度的关系
  • R学习 -- R中的five number
  • usb鼠标驱动注解及测试
  • R学习-- R中的绘图命令练习
  • Web Asp.net 中的Messagebox 判断..
  • R学习-- R连接 SQL SERVER
  • 使用AweSocket 收发消息
  • __asm__ __volatile__内嵌汇编用法简述
  • CLR 学习-- .net中的共享组件与GAC
  • PXA270嵌入式系统设计一:电源管理部分
  • Azure Machine Learning Studio 实例 -- 预测xx年的食物工厂总数
  • azure machine learning 预测分类实例-- 预测出口国
  • PXA270嵌入式系统设计二:时钟及复位部分
  • azure machine learning 机器学习算法的选择
  • linux内核对S3C2410睡眠模式的支持
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 07.Android之多媒体问题
  • 30秒的PHP代码片段(1)数组 - Array
  • Create React App 使用
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • input的行数自动增减
  • JavaScript函数式编程(一)
  • LeetCode29.两数相除 JavaScript
  • Linux CTF 逆向入门
  • MySQL主从复制读写分离及奇怪的问题
  • SegmentFault 2015 Top Rank
  • vue:响应原理
  • Windows Containers 大冒险: 容器网络
  • 初识MongoDB分片
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 我是如何设计 Upload 上传组件的
  • 06-01 点餐小程序前台界面搭建
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​Python 3 新特性:类型注解
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • (多级缓存)缓存同步
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十八)三元表达式和列表解析
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .Net IOC框架入门之一 Unity
  • .Net多线程总结
  • .net连接MySQL的方法
  • ::什么意思
  • @ConditionalOnProperty注解使用说明
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • @SentinelResource详解
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [Android] 修改设备访问权限
  • [EFI]Lenovo ThinkPad X280电脑 Hackintosh 黑苹果引导文件
  • [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 将mysq数据导入HBASE
  • [JavaScript]_[初级]_[关于forin或for...in循环语句的用法]
  • [Json.net]快速入门
  • [Linux] 进程间通信基础