我们在第二期讲了有关矩阵的知识,还没有学习的读者可以点击以下链接跳转阅读:
在这篇文章中,我们将会通过一些练习来巩固已经学习的知识。这些练习题中的部分问题可能是我并没有在第二期讲解部分提到的,但是我认为这些练习也值得学习,所以也添加了进来。
练习题
以下练习均可通过一行代码完成!
a) 请使用matrix()函数生成一个5*5的矩阵mat1,该矩阵中包含从1到50的所有奇数;本题不明确要求元素需按列排布还是按行排布(也不会影响后续解题),但请自行探索并确认matrix()的默认排布方式;
b) 请使用至少三种不同的索引方式,来索引mat1右下角的四个元素(每种索引方式对应一行代码);
c) 给mat1中的每一个元素都加上x,x为该元素所在行的行数。例如,1在第一行,我们就对其加上1,49在第5行,我们就对其加上5;
d) (Challenging) 给mat1中的每一个元素都加上y,y为该元素所在列的列数;
e) 请使用至少两种方式计算mat1每一列的和,以及mat1每一行的和;
f) (Challenging) 接下来我们需要使用R语言自带的HairEyeColor数据集,在R语言中直接输入该名字即可查看该数据集:
HairEyeColor
, Sex = Male
Eye
Hair Brown Blue Hazel Green
Black 32 11 10 3
Brown 53 50 25 15
Red 10 10 7 7
Blond 3 30 5 8
, Sex = Female
Eye
Hair Brown Blue Hazel Green
Black 36 9 5 2
Brown 66 34 29 14
Red 16 7 7 7
Blond 4 64 5 8
请利用apply()函数生成一个头发颜色X眼睛颜色的频数表HairEye(表中包含每种头发颜色与眼睛颜色组合的频数),参考结果如下:
HairEye
Eye
Hair Brown Blue Hazel Green
Black 68 20 15 5
Brown 119 84 54 29
Red 26 17 14 14
Blond 7 94 10 16
g) 在频数表HairEye中,最大的三个值可以通过以下命令获得:
c(HairEye["Brown","Brown"],HairEye["Blond","Blue"],HairEye["Brown","Blue"])
[1] 119 94 84
请使用我们讲解过的另一种方式(仍旧使用字符索引)来获取相同的结果;
h) (Challenging) 将 HairEye 的单元格重新排列,使得行总和和列总和都按照降序排列,参考结果如下:
Eye
Hair Brown Blue Hazel Green
Brown 119 84 54 29
Blond 7 94 10 16
Black 68 20 15 5
Red 26 17 14 14
答案