本节课讲了一些关于R语言的矩阵命令,
基本命令
函数 | 功能 |
---|---|
getwed() | 查看当前文档所在地 |
library() | 显示已安装的包的列表 |
library("*") | 加载这个包 |
search() | 显示已加载的包的列表 |
install.packages() | 下载包 |
detach(“packages:*”) | 移除包 |
remove.packages("*") | 卸载包 |
letters | 输出26个英文字母 |
length() | 计算长度 |
sample() | 随机抽取 |
which() | 返回下标 |
matrix() | 创建矩阵 |
plot() | 创建图片 |
代码展示
创建矩阵
m<- matrix(1:8,nrow =2)#nrow 行数 默认按列输入;m
按行创建矩阵
m<- matrix(1:8,nrow =2,byrow = T)#byrow按行输入;m
matrix(c(1,5,2,6,3,7,4,8),nrow = 2)
运行结果:
矩阵运算
m1 <- matrix(1:4,nrow = 2)
m2 <- matrix(2:5,nrow = 2)
m1;m2
m1 + m2
m1 * m2 #对应位置相乘
运行结果:
#矩阵运算,可以用循环补齐
m1 <- matrix(1:4,nrow=2)
m2 <- matrix(2:7,nrow=2)
m1 <- matrix(1:4,nrow=3)
m1;m2
m1+m2;
运行结果:
由此可见,如果矩阵相加减需要对应行与列
矩阵索引
m<-matrix(1:12,nrow = 4);m;
m[,2:3];m;
m[1:3,]
m[1:3]
m[1:5]#按列输出前5个
#访问矩阵的某行
m;m[1,]
#访问矩阵的某列
m;m[,2]
m[,1<=2]#由于1<=2永远为Ture,因此将全部列输出
运行结果:
矩阵元素按条件筛选
m <- matrix(1:12,nrow =4);m
first.col <-m[,1];first.col
first.col %% 2==0
m[first.col %% 2 ==0,]#由于只有2和4行返回TURE,因此输出2和4行
m[first.col %% 2 ==0 & m[,2] > 6,]
运行结果:
课堂练习-Q:
创建一个矩阵,找出第二列元素能被3整除且大于5的元素所在的行的元素
m<-matrix(c(1,5,2,6,3,7,4,8),nrow = 2);m
first.col <- m[,2];first.col
m[first.col %% 3 ==0 & m[,2] >5]
m<-matrix(1:12,nrow = 4);m
m[-1,]
m[,-1]
m[-1,-1]
m;m <- matrix(sample((1000:9999),8,replace = F))#在这个范围内,找出8个数,并且不可重复
m[,1] < -m
作图
install.packages("pixmap")
library(pixmap)
p <- read.pnm("python.pgm");p#在本地导入一个pgm图片,跟R文件放在一起,读取该图片
plot(p);str(p)#输出图片点位信息
p2<- p
p2@grey[80:103,10:60] <-1 #去掉图片的文字部分
plot(p2)
运行结果: