R学习-- 数组和矩阵
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分解的系数,拟合和残差。
R学习-- 数组和矩阵的更多相关文章
- R学习笔记 第二篇:矩阵、数组和列表
向量是一维的,只有长度(行),没有其他维度.R中存在更高维度的对象,他们是矩阵,数据框,数组.这些对象的下标都是使用中括号[],第一个维度是row,第二个维度是column,依次类推,[row,col ...
- R语言学习笔记:矩阵与数组(array)
元素可以保存在多个维度的对象中,数组存储的是多维数据元素,矩阵的是数组的特殊情况,它具有两维. 创建数组的几种方法. 1. > m<-c(45,23,66,77,33,44,56,12,7 ...
- R语言学习——向量,矩阵
在R中,基本的数据结构有:向量,矩阵,数组,数据框,列表,因子,函数等. 向量:一系列同类型的有序元素构成. 向量是一维结构. 向量是R最简单的数据结构,在R中没有标量. 标量被看成1个元素的向量. ...
- R学习笔记 ---- 系列文章
R实战 开篇:介绍R的使用 R学习笔记 第五篇:字符串操作 R学习笔记 第六篇:数据变换和清理 R学习笔记 第四篇:函数,分支和循环 R学习笔记 第三篇:数据框 R学习笔记 第二篇:矩阵.数组和列表 ...
- R学习----数据类型
今天开始学习R语言了,没原因,就是想学 本人开发环境在ubuntu 16.04 LTS下 R命令提示符 终端直接输入R进入交互模式进行R学习.如下图 R脚本 # My first program in ...
- 数组 array 矩阵 list 数据框 dataframe
转自 : http://blog.csdn.net/u011253874/article/details/43115447 <span style="font-size:14px;& ...
- R学习笔记(4): 使用外部数据
来源于:R学习笔记(4): 使用外部数据 博客:心内求法 鉴于内存的非持久性和容量限制,一个有效的数据处理工具必须能够使用外部数据:能够从外部获取大量的数据,也能够将处理结果保存.R中提供了一系列的函 ...
- python数组和矩阵使用总结
python数组和矩阵使用总结 1.数组和矩阵常见用法 Python使用NumPy包完成了对N-维数组的快速便捷操作.使用这个包,需要导入numpy. SciPy包以NumPy包为基础,大大的扩展了n ...
- R语言数组array函数
数组是一个可以在两个以上的维度存储数据的R数据对象.例如 - 如果创建尺寸(2,3,4)的数组,那么创建4个矩形矩阵每2行3列.数组只能存储数据类型. 使用 array()函数创建数组.它需要向量作为 ...
随机推荐
- spring之scope作用域
spring中,bean的作用域有五种类型:默认是单例模式, singleton prototype request session ...
- 【bzoj1854】[Scoi2010]游戏 - 并查集
lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备最多只能使 ...
- Cache技术――OSCache(转-全)
OSCache使用指南 一.下载安装 OSCache是一个基于web应用的组件,他的安装工作主要是对web应用进行配置,大概的步骤如下: 1. 下载.解压缩OSCache 从http://www.op ...
- day02-菜单处理
解决力度到按钮的级别 ----------------------------------------------------------------------------------------- ...
- 接口自动化测试之HTTP协议详解
协议 简单理解,计算机与计算机之间的通讯语言就叫做协议,不同的计算机之间只有使用相同的协议才能通信.所以网络协议就是为计算机网络中进行数据交换而建立的规则,标准或约定的集合. OSI模型 1978年国 ...
- 洛谷—— P1051 谁拿了最多奖学金
https://www.luogu.org/problem/show?pid=1051 题目描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖 ...
- Windows Phone 8.1 开发实例 网络编程 天气预报
首先感谢林政老师的博客,给了我很大的指导. 准备工作 我的开发环境: - Visual Studio 2013(With Update 4) - Windows Phone 8.1 - Windows ...
- Leetcode 数组问题2:买卖股票的最佳时机 II
问题描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易( ...
- Java重写父类使用@Override时出现The method destroy() of type xxx must override a superclass method的问题解决
解决方法: 1.把JDK版本改成1.6以上的. 2.把Compiler改成1.6以上的. 关于这两者的区别,参考:http://www.cnblogs.com/EasonJim/p/6741682.h ...
- Mac Ubuntu ----端口被占用
Mac下使用lsof(list open files)来查看端口占用情况,lsof 是一个列出当前系统打开文件的工具. 使用 lsof 会列举所有占用的端口列表: 1 $ lsof 使用less可以用 ...