R语言向量与矩阵

目录

1.向量

1.1 介绍

1.2 使用

1.2.1 创建

1.2.2 运算

1.2.3 索引

1.3 相关函数

1.3.1 求长度

1.3.2 插入数据

1.3.3 删除 

2.矩阵

2.1 介绍

2.2 使用


1.向量

1.1 介绍

R语言中的向量与数学中的向量不同,是用于储存数值型、字符型或逻辑型数据的一维数组

1.2 使用

1.2.1 创建

我们用赋值符号<-和c(元素)来创建一个向量

> x<-c(1,2,3,4,5)
> x
[1] 1 2 3 4 5

也可以用seq()生成一个等差数列 ,例如生成从1到10公差为2的等差数列

> x<-seq(from=1,to=10,by=2)
> x
[1] 1 3 5 7 9

还可以用rep()函数来生成周期数列

> x<-rep(c(1,2,3),3)
> x
[1] 1 2 3 1 2 3 1 2 3

1.2.2 运算

单个向量

数乘

> x<-5*x
> x
[1] 10 15 20 25 30

自增

> x<-c(1:5)
> x
[1] 1 2 3 4 5
> x<-x+1
> x
[1] 2 3 4 5 6

多个向量

与数学中的向量类似,R中的向量之间可以进行线性运算

> x<-c(1:5)
> y<-c(6:10)
> 2*x+3*y
[1] 20 25 30 35 40

还可以进行乘法、幂、取余、取整运算

> x<-c(1:5)
> y<-c(6:10)
> x*y
[1]  6 14 24 36 50
> x**y
[1]       1     128    6561  262144 9765625
> x%%y
[1] 1 2 3 4 5
> x%/%y
[1] 0 0 0 0 0

 注意:不同长度向量的运算短的向量会循环使用

逻辑运算

大小关系

> x

包含关系

> x%in%y
[1] FALSE FALSE FALSE FALSE FALSE

1.2.3 索引

下标索引:

> x<-c(1:5)
> x[1]
[1] 1
> x[-1]
[1] 2 3 4 5
> x[c(1:3)]
[1] 1 2 3

 注意:负数表示取补访问

 逻辑索引:

> x<-c(1:5)
> x[c(T,F,T,F,T)]
[1] 1 3 5
> x[x>3&x<5]
[1] 4
> x[c(T,F)]
[1] 1 3 5

注意:逻辑向量中的元素个数小于向量元素个数时会循环判断 

哈希索引:

> names(x)<-c("one","two","three","four","five")
> x["three"]
three 
    3 

注意:哈希相当于建立向量与向量之间的映射关系 

1.3 相关函数

1.3.1 求长度

> length(x)
[1] 5

1.3.2 插入数据

末尾插入

> x[c(6,7,8)]<-c(6,7,8)
> x
  one   two three  four  five             
    1     2     3     4     5     6     7 
      
    8 

非末尾插入

> append(x=x,values = 100,after = 1)
  one         two three  four  five 
    1   100     2     3     4     5 

1.3.3 删除 

删除整个向量

> rm(x)
> x
Error: object 'x' not found

删除某个元素 

> x<-c(1:5)
> x
[1] 1 2 3 4 5
> x<-x[-1]
> x
[1] 2 3 4 5

2.矩阵

2.1 介绍

R中矩阵的概念和性质与数学中的矩阵基本类似

2.2 使用

2.2.1 创建

> m<-matrix(1:20,4,5)
> m
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    9   13   17
[2,]    2    6   10   14   18
[3,]    3    7   11   15   19
[4,]    4    8   12   16   20

 还可以给行和列标号

> rnames<-c("r1","r2","r3","r4")
> cnames<-c("c1","c2","c3","c4","c5")
> dimnames(m)<-list(rnames,cnames)
> m
   c1 c2 c3 c4 c5
r1  1  5  9 13 17
r2  2  6 10 14 18
r3  3  7 11 15 19
r4  4  8 12 16 20

2.2.2 访问

我们不仅可以访问单个元素,某一行(列)元素,还可以访问矩阵的一个子阵

> m[1,2]
[1] 5
> m[,2]
[1] 5 6 7 8
> m[c(1,2),c(3,4)]
     [,1] [,2]
[1,]    9   13
[2,]   10   14

也可以通过行和列的名字来访问 

> m["r1","c1"]
[1] 1
> m[,"c1"]
r1 r2 r3 r4 
 1  2  3  4 

2.2.3 运算

单个矩阵

数乘

> m<-m*3
> m
   c1 c2 c3 c4 c5
r1  3 15 27 39 51
r2  6 18 30 42 54
r3  9 21 33 45 57
r4 12 24 36 48 60

 行(列)求和、求平均

> colSums(m)
 c1  c2  c3  c4  c5 
 30  78 126 174 222 
> rowSums(m)
 r1  r2  r3  r4 
135 150 165 180 
> rowMeans(m)
r1 r2 r3 r4 
27 30 33 36 
> colMeans(m)
  c1   c2   c3   c4   c5 
 7.5 19.5 31.5 43.5 55.5 

求对角线上元素 

> m<-matrix(1:9,3,3)
> m
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> diag(m)
[1] 1 5 9

转置

> m<-matrix(1:20,4,5)
> m
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    9   13   17
[2,]    2    6   10   14   18
[3,]    3    7   11   15   19
[4,]    4    8   12   16   20
> t(m)
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12
[4,]   13   14   15   16
[5,]   17   18   19   20

两个矩阵

加法

> m<-matrix(1:9,3,3)
> m
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> n<-matrix(2:10,3,3)
> n
     [,1] [,2] [,3]
[1,]    2    5    8
[2,]    3    6    9
[3,]    4    7   10
> m+n
     [,1] [,2] [,3]
[1,]    3    9   15
[2,]    5   11   17
[3,]    7   13   19

内积

> m*n
     [,1] [,2] [,3]
[1,]    2   20   56
[2,]    6   30   72
[3,]   12   42   90

外积

> m%*%n
     [,1] [,2] [,3]
[1,]   42   78  114
[2,]   51   96  141
[3,]   60  114  168

你可能感兴趣的:(R语言,矩阵,r语言,线性代数)