R语言实验二矩阵和数组

1、创建

1.1 利用array函数,创建二维数组m1,每一行记录不同人(A,B,C)的各科成绩(math,english,physics),成绩请随意输入(要求每行至少有一个90分以上)

m1<-array(c(95,40,80,55,92,98,86,93,55),
         dim=c(3,3),
         dimnames=list(c('A','B','C'), c('math','english','physics')))
m1

 

1.2 利用matrix函数,创建二维数组m2,每一行记录不同人(A,B,C)的各科成绩(math,english,physics),成绩请随意输入(要求每行至少有一个90分以上,每一列至少有一个60分以下)

m2<-matrix(c(94,48,79,55,92,91,81,90,66),
          nrow=3,
          dimnames=list(c('A','B','C'), c('math','english','physics')))

1.3 如果要记录2个学期的成绩,请写出代码示例(成绩随意填写),创建的数组记为m3

m3<-array(c(m1,m2),
         dim=c(3,3,2),
         dimnames=list(c('A','B','C'),c('math','english','physics'),c('q1','q2')))

 

 2、 索引

 2.1 请尝试使用不同索引方式,索引m1中的数据

m1[1,3]   # m1的1行3列
m1[,1]    # m1所有行的第一列
m2[1,]    # m1第一行的所有列
m1[-1,1:2]  # -1表示除了第一行的所有行,1:2第一列和第二列
m1[m1>80]   #m1中所有大于80的成绩
m1['A',1]   #m1中第A行的第一列
m1[1,'math']    #第一行的math列

 

 

2.2 获取数学成绩高于85分的同学姓名

names <- rownames(m1)
names  #首先获取所有的名字
names[m1[,'math']>85]

 

2.3 获取单科成绩超过90分的同学姓名

names[m1[,'math']>90 | m1[,'english']>90 | m1[,'physics']>90] 

 

2.4 获取成绩超过90分的同学姓名和科目名称

subjects <- colnames(m1)  #查看一共有哪些科目
subjects

# 获取数学成绩大于90的姓名和科目
names1 <- names[m1[,'math']>90]
names1
names2 <- rep('math',length(names1))  
names2

# 获取英语成绩大于90的姓名和科目
nnmst <- names[m1[,'english']>90]
nnmst
names2 <- c(names2,rep('english',length(nnmst)))  #将姓名和刚才的姓名拼接在一起
names2
names1 <- c(names1,nnmst)  #将科目也拼接在一起
names1

# 获取物理成绩大于90的姓名和科目
nnmst <- names[m1[,'physics']>90]
nnmst
names2 <- c(names2,rep('physics',length(nnmst))) #拼接姓名
names2
names1 <- c(names1,nnmst)  #拼接科目
names1  

 

3、特征与操作

3.1 获取m1的行数,列数

dims <- dim(m1)
dims

3.2 获取m3的行数,列数以及维度

d3 <- dim(m3)
d3

 3.3 获取m3中数据的个数

length(m3)

 3.4 获取m2的行名和列名

 

 3.5 随机创建2X3和2X4的矩阵分别记为mm1,mm2, 将他们按行组合成一个矩阵,组合后的矩阵维度是多少

mm1 <- array(runif(6),dim=c(2,3)) #随机生成2行3列的小数矩阵
mm1
mm2 <- array(runif(8),dim=c(2,4))  #随机生成2行4列的小数矩阵
mm2
mm3 <- cbind(mm1,mm2)  #按行合并
mm3
dim(mm3)   #查看维度

 

3.6  随机创建2X4和3X4的矩阵分别记为mm1,mm2, 将他们按列组合成一个矩阵,组合后的矩阵维度是多少

mm1 <- array(runif(8),dim=c(2,4))
mm1
mm2 <- array(runif(12),dim=c(3,4))
mm2
mm3 <- rbind(mm1,mm2)  #按列合并
mm3
dim(mm3)

 

4、运算

4.1 将1到9创建为3行3列的矩阵A,将9到1创建为3行3列的矩阵B,计算A和B的和,差,乘积

A<-array(1:9,dim=c(3,3))
A

B<-matrix(9:1,nrow=3)
B

A+B
A-B
A*B

 

 4.2 求A的转置矩阵,A与B的内积,求A*B的逆矩阵

t(A)  #转置
A%*%B  #内积
solve(A*B)  #逆矩阵

#验证 
(A*B)%*%solve(A*B)

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值