R语言向量、矩阵用法 第一节后续

R语言

 

一、向量补充内容,矩阵补充内容

 

> 1:10

 [1] 1  2  3 4  5  6 7  8  9 10              #输出1到10的元素

 

> 1:10-1

 [1]0 1 2 3 4 5 6 7 8 9                                       #输出1到10的元素并且减去最后第10个元素

 

> 1:10*2                                                      #输出1到10的元素,并且每个元素乘以2

 [1] 2  4  6  8 1012 14 16 18 20

 

> 2:60*2+1                                                  #输出2到60的元素,并且每个元素乘以2再加上1

 [1]   5  7   9  11 13  15  17 19  21  23 25  27  29 31  33  35 37  39  41

[20] 43  45  47 49  51  53 55  57  59 61  63  65 67  69  71 73  75  77  79

[39] 81  83  85 87  89  91 93  95  97  99101 103 105 107 109 111 113 115 117

[58] 119 121

 

> a=2:60*2+1

> a

 [1]  5   7   9 11  13  15 17  19  21 23  25  27 29  31  33 35  37  39  41

[20] 43  45  47 49  51  53 55  57  59 61  63  65 67  69  71 73  75  77  79

[39] 81  83  85 87  89  91 93  95  97  99101 103 105 107 109 111 113 115 117

[58] 119 121

> a[5]                                                                                              #输出a中的第5个元素

[1] 13

 

> a[-5]                                                                   #除了a中的第5个元素不显示其余全部输出

 [1]  5   7   9 11  15  17 19  21  23 25  27  29 31  33  35 37  39  41  43

[20] 45  47  49 51  53  55 57  59  61 63  65  67 69  71  73 75  77  79  81

[39] 83  85  87 89  91  93  95  97  99101 103 105 107 109 111 113 115 117 119

[58] 121

 

> a[1:5]                                               #输出a中第1个元素到第5个元素全部显示出来

[1] 5  7  9 11 13

 

 

 

 

> a[-(1:5)]                                           #输出除了第1个元素到第5个元素,其余全部输出

 [1] 15  17  19 21  23  25 27  29  31 33  35  37 39  41  43 45  47  49  51

[20] 53  55  57 59  61  63 65  67  69 71  73  75 77  79  81 83  85  87  89

[39] 91  93  95 97  99 101 103 105 107 109 111 113115 117 119 121

 

> a[c(2,4,7)]                              #输出向量中第2个元素、第4个元素、第7个元素的值

[1] 7 11 17

 

> a[3:8]                                      #输出第3个元素到第8个元素的值

[1] 9 11 13 15 17 19

 

> a[a<20]                                            #输出a中的a小于20的元素输出

[1] 5  7  9 11 13 15 17 19

 

> a[a>30 & a<50]                     #输出a中a大于30且小于50的元素输出

 [1]31 33 35 37 39 41 43 45 47 49

 

二、seq()函数使用按照指定的规律输出

 

> seq(5,20)                                 #输出从5开始到20的元素,它是以公差1进行执行

 [1] 5  6  7 8  9 10 11 12 13 14 15 16 17 18 1920

 

> seq(5,121,by=2)                    #输出从5开始到121的元素,并且使用by=2(公差2进行执行)

 [1]  5   7   9 11  13  15 17  19  21 23  25  27 29  31  33 35  37  39  41

[20] 43  45  47 49  51  53 55  57  59 61  63  65 67  69  71 73  75  77  79

[39] 81  83  85 87  89  91  93 95  97  99 101 103 105 107 109 111 113 115 117

[58] 119 121

 

> seq(5,121,length=10)    #从第5个元素到121元素中自动去出10个元素算出它们的公差

 [1]  5.00000  17.88889  30.77778 43.66667  56.55556  69.44444 82.33333

 [8] 95.22222 108.11111 121.00000

 

三、产生字母序列letters 固定的向量名,里面通常用的是26个字母

 

> letters[1:30]

 [1]"a" "b" "c" "d" "e""f" "g" "h" "i" "j""k" "l" "m" "n" "o" "p""q" "r" "s"

[20] "t" "u""v" "w" "x" "y" "z" NA  NA NA  NA

 

 

四、which() 函数

 

> a = c(2,3,4,2,5,1,6,3,2,5,8,5,7,3)                          #定义一个向量为a并赋值

> which.max(a)                                                   #返回最大元素值的下标(注意这是下标

[1] 11

 

> which.min(a)                                                    #返回最小元素值的下标

[1] 6

 

> a[which.max(a)]                            #返回a对应的最大元素下标的值(注意这是下标的值

[1] 8

 

> which(a==2)                                    #返回a等于2的下标

[1] 1 4 9

 

> which(a>5)                                      #返回a大于5的元素下标

[1] 7 11 13

 

五、rev()函数,sort()函数

 

> a=1:20

> a

 [1] 1  2  3 4  5  6 7  8  9 10 11 12 13 14 15 16 17 18 19 20

> rev(a)                                                #将a向量进行颠倒输出

 [1]20 19 18 17 16 15 14 13 12 11 10  9  8 7  6  5 4  3  2  1

 

> a=c(2,3,4,2,5,1,6,3,2,5,8,5,7,3)

> sort(a)                                              #将a向量进行排序

 [1]1 2 2 2 3 3 3 4 5 5 5 6 7 8

 

六、matrix() 生成矩阵的函数

 

> a1=c(1:12)                                       #输出a1向量1到12

> matrix(a1,nrow=3,ncol=4)  #利用a1来生成一个矩阵,nrow=3是3行的,ncol=4是4列

    [,1] [,2] [,3] [,4]

[1,]   1    4    7  10

[2,]   2    5    8  11

[3,]   3    6    9  12

 

 

 

 

 

 

> matrix(a1,nrow=4,ncol=3,byrow=T)                    #byrow=T是按照行来输出

    [,1] [,2] [,3]

[1,]   1    2    3

[2,]   4    5    6

[3,]   7    8    9

[4,]  10   11   12

 

七、t ()函数,矩阵加减

 

> a=matrix(a1,nrow=3,ncol=4)

> a

    [,1] [,2] [,3] [,4]

[1,]   1    4    7  10

[2,]   2    5    8  11

[3,]   3    6    9  12

> t(a)                                                                              #将列输出的改为行输出(转置输出

    [,1] [,2] [,3]

[1,]   1    2    3

[2,]   4    5    6

[3,]   7    8    9

[4,]  10   11   12

 

> a=b=matrix(1:12,nrow=3,ncol=4)                        #将a的矩阵+b的矩阵输出新的矩阵

> a+b

    [,1] [,2] [,3] [,4]

[1,]   2    8   14  20

[2,]   4   10   16  22

[3,]   6   12   18  24

 

八、矩阵相乘,diag()函数

 

> a=matrix(1:12,nrow=3,ncol=4)

> b=matrix(1:12,nrow=4,ncol=3)

> a%*%b

    [,1] [,2] [,3]

[1,]  70  158  246

[2,]  80  184  288

[3,]  90  210  330

 

 

 

 

 

 

> a=matrix(1:16,nrow=4,ncol=4)

> a

    [,1] [,2] [,3] [,4]

[1,]   1    5   9   13

[2,]   2    6   10  14

[3,]   3    7   11  15

[4,]   4    8   12  16

> diag(a)                                                               #输出a的对角线的元素

[1] 1  6 11 16

 

> diag(4)                                                               #输出4接的对角线矩阵

    [,1] [,2] [,3] [,4]

[1,]   1    0    0   0

[2,]   0    1    0   0

[3,]   0    0    1    0

[4,]   0    0    0   1

 

九、矩阵求逆,rnorm(),solve() 函数

 

> a=matrix(rnorm(16),4,4)     #rnorm(16) 使用正态分布产生16个点的随机数4行4列

> a

         [,1]       [,2]       [,3]        [,4]

[1,] 0.1186737 -0.2329563 -0.2895613  0.09724836

[2,] 1.1655629  1.4100980 1.0455310  0.23569866

[3,] 0.2507595 -0.4479965  0.1312116 -0.33605265

[4,] 0.5013942  0.0905529 -0.1048480  0.32511665

 

> solve(a)                                            #输出立矩阵使用solve函数

          [,1]      [,2]       [,3]     [,4]

[1,]  3.985808  0.907088  0.5165262 -1.315936

[2,]  7.858242  1.841710 -1.6009949-5.340570

[3,] -12.270522 -1.964825  1.5498019 6.696703

[4,] -12.292779 -2.545513  0.1491313 8.752374

 

十、解析性方乘组,solve(a,b) 函数

 

> a=matrix(rnorm(16),4,4)

> a

          [,1]       [,2]       [,3]     [,4]

[1,] 0.6655258  0.7331254 -0.78801830.8556388

[2,] -2.1513861  0.1020709 0.8210317 0.5711970

[3,] -0.5653800  1.5251885 -0.2466422 0.7837121

[4,] 0.8189911 -0.1839945 -1.5230336 1.1184135

> b=c(1:4)

> b

[1] 1 2 3 4

> solve(a,b)

[1] -3.9433724  0.5968244 -6.4376567 -2.2043442

 

方程组解法是如:0.6655258*x1 0.7331254*x20.7880183*x3 0.8556388*x4

以此类推最后使用solve(a,b)

 

十一、矩阵的特征值与特征向量,eigen() 函数

 

> a=diag(4)+1                                    

> a                                                        #输出对角线的值

     [,1] [,2] [,3] [,4]

[1,]    2   1    1    1

[2,]    1   2    1    1

[3,]    1   1    2    1

[4,]    1    1    1   2

>a.e=eigen(a,symmetric=T)           #输出特征值

> a.e

$values

[1] 5 1 1 1

 

$vectors

     [,1]      [,2]       [,3]       [,4]

[1,] -0.5  0.8660254 0.0000000  0.0000000

[2,] -0.5 -0.2886751-0.5773503 -0.5773503

[3,] -0.5 -0.2886751-0.2113249  0.7886751

[4,] -0.5-0.2886751  0.7886751 -0.2113249

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随行之旅

python国产化自动化

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值