R语言编程艺术读书笔记3----矩阵和数组(1)
来源:互联网 发布:做笔记的软件 知乎 编辑:程序博客网 时间:2024/05/20 16:11
矩阵和数组也属于向量
1、创建矩阵
matrix(c,nrow,ncol,byrow)函数创建矩阵:
参数详解:
c: 可选 向量 用于填充矩阵的值 不填充时默认NA
exp:x <- matrix(nrow=2,ncol=2)
输出:
NA NA
NA NA
nrow:可选 行数 指定矩阵行数
exp:x <- matrix(c(1,3,5,7),nrow=2) #矩阵默认按列填充
输出:
1 5
3 7
ncol:可选 列数 指定矩阵列数
exp: x <- matrix(c(2,4,6,8,10,12),ncol=3) #矩阵默认按列填充
输出:
2 8
4 10
6 12
byrow:可选 按行填充矩阵(不改变矩阵实际存储方式 矩阵依然按列存储)
exp:y <- matrix(c(1,3,5,7,9,11),nrow=3,ncol=2,byrow=T) #T代表TRUE 默认FALSE 不需要显示声明
输出:
1 3
5 7
9 11
也可以先创建空矩阵然后赋值填充
exp:x <- matrix(nrow=2,ncol=2)
x[1,1]=0
x[2,1]=1
x[1,2]=2
x[2,2]=3
输出:
0 2
1 3
2、矩阵常规操作
线性代数运算
exp:
y <- matrix(c(1,2,3,4),nrow=2)
y%*%y(矩阵乘法)
输出:
7 15
10 22
5*y(矩阵数量乘法)
输出:
5 15
10 20
y+y(矩阵加法)
输出:
2 6
4 8
矩阵索引 exp:y[2:3,]第2、3行 ;y[,2:4]第2、3、4列 ;y[1:2,3]第1、2行的第3列
可以使用如上索引对矩阵赋值 也可以将矩阵赋值给一个矩阵索引区域
负数索引表示排除掉某一行或某一列 同向量 exp:y[-2,]除第二行之外
案例:图像操作
Code:
library(pixmap) #加载pixmap包
mtrush1 <- read.pnm("mtrush1.pgm") #读取图片
plot(mtrush1) #画图
【注】pixmap类属于S4类 使用@符引用元素(组件) ;S3类使用$符引用元素
locator()函数返回用户点击位置的坐标
#白色覆盖
mtrush2 <- mtrush1
mtrush2@grey[84:163,135:177] <- 1
plot(mtrush2)
#马赛克
blurpart <- function(img,rows,cols,q) {
lrows <- length(rows)
lcols <- length(cols)
newimg <- img
randomnoise <- matrix(nrow=lrows,ncol=lcols,runif(lrows*lcols)) #生成lrows*lcols个均匀分布的随机数并填充到lrows行lcols列的矩阵中
newimg@grey <- (1-q) * img@grey + q * randomnoise #生成一个马赛克图
return(newimg)
}
mtrush3 <- blurpart(mtrush1,84:163,135:177,0.65)
plot(mtrush3)
矩阵筛选:x(expr) 在索引中使用条件表达式 exp:x <- x[x[,2] >= 3,] 表示x矩阵中第2列大于3的元素
案例:生成协方差矩阵
Code:
makecov <- function(rho,n) { #rho 斯皮尔曼等级相关系数 希腊字母ρ
m <- matrix(nrow=n,ncol=n)#生成一个n行n列的矩阵
m <- ifelse(row(m) == col(m),1,rho) #row()函数返回矩阵元素的行号 col()函数返回矩阵元素的列号 意思就是行号等于列号返回1 也就是矩阵的对角线处返回1
return m
}
- R语言编程艺术读书笔记3----矩阵和数组(1)
- R语言编程艺术读书笔记4----矩阵和数组(2)
- 《R语言编程艺术》笔记3--矩阵和数组
- R语言编程艺术学习笔记(矩阵、数组、列表)
- R语言编程艺术读书笔记1----快速入门
- R语言编程艺术读书笔记2----向量
- R语言编程艺术读书笔记5----列表
- (R语言)数组和矩阵
- R语言编程艺术
- 《R语言编程艺术》笔记1
- R 语言编程艺术笔记
- R编程艺术读书笔记(5-6章)
- R语言编程艺术完结版和读后感
- R语言学习:数据结构3-矩阵、数组
- R语言编程艺术学习笔记(快速入门、向量)
- 《unix编程艺术》读书笔记(1)
- R语言学习(2)-向量矩阵和数组
- R语言向量_标量、向量、数组和矩阵
- Mysql中使某个用户只能访问指定的数据库
- java--java.lang.Thread.join() 方法
- ③NuPlayer播放框架之类NuPlayer源码分析
- 新建表空间,用户等操作
- java多线程基础二
- R语言编程艺术读书笔记3----矩阵和数组(1)
- Canvas.drawText()中的文本高度
- 动态规划/递推
- Roll a ball稍微加强版
- 看无可看
- Android应用优化之流畅度
- 状态机跑飞的惨案
- servletcontext与application的联系
- Socket编程(网络协议一)