我是靠谱客的博主 仁爱大船,这篇文章主要介绍一起学习R软件吧——数组、矩阵、列表、数据框前言一、多维数组和矩阵二、列表与数据框总结,现在分享给大家,希望可以做个参考。

R软件的使用

  • 前言
  • 一、多维数组和矩阵
    • 1.1 构造
    • 1.2 索引
    • 1.3 运算
  • 二、列表与数据框
    • 2.1 列表构造
    • 2.2 列表索引
    • 2.3 数据框生成
    • 2.4 数据框索引
  • 总结


前言

啥也不多说,学就对了!题外话,其实我是先接触的C语言,之后接触Python和Matlab,现在接触了R语言,其实我最大的感触是学完C语言,不怎么用,之后就几乎忘得差不多了,但是它的逻辑精髓影响着我的其他语言的学习,当然还有一个困扰我的地方是,对于我这号初学者,python,matlab,R语言的一些语法很容易记混,尤其是在写循环和索引的时候,不知道大家是否和我一样有这样的困扰,求大佬指点!


提示:以下是本篇文章正文内容,上面的话仅代表个人观点。

一、多维数组和矩阵

数组(array)可以看成是带多个下标的类型相同元素的集合,常用的是数值型数组如矩阵。R软件可以很容易地生成和处理数组。
数组有一个特殊地属性叫做维数向量,即dim属性。

1.1 构造

将向量定义成数组(向量定义了维数才是数组)。
array()函数构造数组
matrix()函数构造矩阵
注意矩阵的元素是按列存放的 ,构造矩阵时默认值byrow=False,按列排。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
> #构建数组 > a=1:8 > dim(a)=c(2,4) > a [,1] [,2] [,3] [,4] [1,] 1 3 5 7 [2,] 2 4 6 8 > dim(a)=8 > a [1] 1 2 3 4 5 6 7 8 #也可定义为一维数组 > x=array(1:12,dim = c(3,4)) > x [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 > #构建矩阵 > #默认值byrow=False,按列排 > A=matrix(1:15,nrow = 3,ncol = 5,byrow = T) > A [,1] [,2] [,3] [,4] [,5] [1,] 1 2 3 4 5 [2,] 6 7 8 9 10 [3,] 11 12 13 14 15

1.2 索引

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
> a=1:24 > dim(a)=c(2,3,4) > a , , 1 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 , , 2 [,1] [,2] [,3] [1,] 7 9 11 [2,] 8 10 12 , , 3 [,1] [,2] [,3] [1,] 13 15 17 [2,] 14 16 18 , , 4 [,1] [,2] [,3] [1,] 19 21 23 [2,] 20 22 24 > a[2,1,2] [1] 8 > a[1,2:3,2:3] [,1] [,2] [1,] 9 15 [2,] 11 17 > a[1,,] [,1] [,2] [,3] [,4] [1,] 1 7 13 19 [2,] 3 9 15 21 [3,] 5 11 17 23 > a[,2,] [,1] [,2] [,3] [,4] [1,] 3 9 15 21 [2,] 4 10 16 22 > a[1,1,] [1] 1 7 13 19 > a[3:10] [1] 3 4 5 6 7 8 9 10

1.3 运算

数组的运算:数组的加减运算满足矩阵运算的性质,但是数组的乘除运算实际上是对应位置的元素在做运算。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
> #运算 > A=matrix(1:6,nrow = 2,byrow = T);A [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 > B=matrix(1:6,nrow = 2);B [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > C=matrix(c(1,2,3,4,5,5),nrow = 2);C [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 5 > D=2*C+A/B;D [,1] [,2] [,3] [1,] 3 6.666667 10.6 [2,] 6 9.250000 11.0 > #矩阵运算 > t(A) #转置 [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 > M=matrix(1:4,ncol =2);M [,1] [,2] [1,] 1 3 [2,] 2 4 > det(M) #矩阵行列式的值 [1] -2 > x=1:5;y=3*1:5 > x%*%y#内积 [,1] [1,] 165 > crossprod(x,y) #内积 [,1] [1,] 165 > x%o%y #外积 [,1] [,2] [,3] [,4] [,5] [1,] 3 6 9 12 15 [2,] 6 12 18 24 30 [3,] 9 18 27 36 45 [4,] 12 24 36 48 60 [5,] 15 30 45 60 75 > outer(x,y) [,1] [,2] [,3] [,4] [,5] [1,] 3 6 9 12 15 [2,] 6 12 18 24 30 [3,] 9 18 27 36 45 [4,] 12 24 36 48 60 [5,] 15 30 45 60 75 > m=array(1:9,dim = (c(3,3))) > n=array(9:1,dim = (c(3,3))) > m*n #代表矩阵对应元素的乘积 [,1] [,2] [,3] [1,] 9 24 21 [2,] 16 25 16 [3,] 21 24 9 > m%*%n #代表矩阵的乘积 [,1] [,2] [,3] [1,] 90 54 18 [2,] 114 69 24 [3,] 138 84 30 > diag(M) #矩阵对角元素 [1] 1 4 > diag(c(1,2,3)) #创建对角矩阵 [,1] [,2] [,3] [1,] 1 0 0 [2,] 0 2 0 [3,] 0 0 3

关于矩阵的拼接,函数cbind()把自变量按照横向拼成一个矩阵,高度相同。函数rbind()把自变量进行纵向拼接,宽度相同。dimnames()可以进行数组的维命名。aperm()函数可以按照指定新次序重新排列。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
> #数组维度命名 > x=matrix(1:4,nrow = 2, + dimnames = list(c("A","B"),c("m","n")), + byrow = T) > x m n A 1 2 B 3 4 > aperm(x,c(2,1)) A B m 1 3 n 2 4

apply函数可以对数组(矩阵)的一维或者若干维进行某种计算。

复制代码
1
2
3
4
5
6
7
8
9
10
> A=matrix(1:6,ncol = 2);A [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 > apply(A,1,sum) [1] 5 7 9 > apply(A,2,mean) [1] 2 5

二、列表与数据框

2.1 列表构造

列表是一个特别的对象集合,其元素也由下标区分,但是其不同元素不必是同一类型。

2.2 列表索引

注意列表不同意向量,列表每次只能引用一个元素。列表元素可以采用“列表名[[下标]]”(两重括号)或者”列表吗$元素名“来进行引用。
值得注意的是一重括号也是合法的,但是结果类型是列表

示例如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
> #列表构造 > ky=list(name="ky",age="2",num=c(1,2,1)) > ky $name [1] "ky" $age [1] "2" $num [1] 1 2 1 > ky[["name"]] [1] "ky" > ky$age [1] "2"

突然发现原来代码可以直接插入r的代码块,张见识了。

2.3 数据框生成

数据框(data.frame)是R语言中的一种数据结构,是一种特殊的列表类型。数据框的每列是一个变量,每行是一个观测。作为数据框变量的向量、因子或矩阵必须有相同的长度(行数)常常把数据框看作一个推广的矩阵。

2.4 数据框索引

数据框的元素索引与矩阵类似,可以采用下标或者下标向量,也可以直接使用名字或名字向量。当然数据框额度属性也可以按列表引用(采用双括号[[ ]],或者$来引用)
代码如下(示例):

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
> #数据框 > df=data.frame( + name=c("a","b","c"), + age=c(1,2,3), + wel=c(4,5,6) + ) > #索引 > df[2:3,1:2] name age 2 b 2 3 c 3 > df$age [1] 1 2 3

下边记录一个attach()函数,这个是干啥用的嘞?就是一句话让你省事儿的,不用你老一直“数据框名$变量名“的输入,它可以直接把数据框中的变量”链接“到内存中,这样就可以直接调用数据框中的变量啦。

复制代码
1
2
3
4
5
> attach(df) > r=age*2 > r [1] 2 4 6

如果你不想”链接“了,调用一下detach()就ok,无参数即可。

总结

每次一到考试前的学习时间,嘿嘿嘿就有好多事情蹦出来,谨言慎行,很多事情很残酷,但是你却不得不去直面,成长的道路很充满荆棘,在此感谢那些逼着我直面现实的人,让我不断打破自己为自己编织的安乐窝。生于忧患,死于安乐。继续学习,不断努力!

最后

以上就是仁爱大船最近收集整理的关于一起学习R软件吧——数组、矩阵、列表、数据框前言一、多维数组和矩阵二、列表与数据框总结的全部内容,更多相关一起学习R软件吧——数组、矩阵、列表、数据框前言一、多维数组和矩阵二、列表与数据框总结内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部