第五次课-向量

黄利东

08/04/2021

回顾——向量及向量索引

-生成向量

> x <- 1:10
> y <- c(2,5,7,-1,3,5)
> seq(0,15,by=3)
## [1]  0  3  6  9 12 15
> rep(3,5)
## [1] 3 3 3 3 3
> rep(3:10,2)
##  [1]  3  4  5  6  7  8  9 10  3  4  5  6  7  8  9 10
> rep(3:10,each=2)
##  [1]  3  3  4  4  5  5  6  6  7  7  8  8  9  9 10 10
> rnorm(10)
##  [1]  0.5749729  0.8982385  0.3973564  1.8914002 -1.5801439 -0.3243789
##  [7] -0.6898591  0.1164802 -0.7841381 -0.7203480

向量索引

R向量是按下标索引,并且从1开始。

-向量索引 序号索引和逻辑索引

> x <- 10:20
> x[3:5]
## [1] 12 13 14
> x[5:3]
## [1] 14 13 12
> x[c(1,9)]
## [1] 10 18
> x[-8]
##  [1] 10 11 12 13 14 15 16 18 19 20
> x[c(T,F)]
## [1] 10 12 14 16 18 20
> x[c(F,T)]
## [1] 11 13 15 17 19
> x>13
##  [1] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
> x[x>13]
## [1] 14 15 16 17 18 19 20
> LETTERS[1:3];letters[1:3];
## [1] "A" "B" "C"
## [1] "a" "b" "c"

向量元素修改

> x <- 10:20
> x[1] <- 1
> x[15] <- 1

向量排序

> w <- sample(LETTERS,10)
> w
##  [1] "T" "Q" "Y" "I" "B" "L" "R" "X" "S" "H"
> sort(w)
##  [1] "B" "H" "I" "L" "Q" "R" "S" "T" "X" "Y"

新课——向量运算

-向量加减法运算

> x <- 10:20#直接创建
> y <- 30:40
> x+y
##  [1] 40 42 44 46 48 50 52 54 56 58 60
> z <- 1:5
> x+z
## Warning in x + z: longer object length is not a multiple of shorter object
## length
##  [1] 11 13 15 17 19 16 18 20 22 24 21

向量乘算运算

> x <- 1:4
> y <- 5:8
> x*2
## [1] 2 4 6 8
> x*y
## [1]  5 12 21 32
> x%*%y#内积
##      [,1]
## [1,]   70
> crossprod(x,y)#内积第二种方法
##      [,1]
## [1,]   70
> x%o%y#向量外积方法1
##      [,1] [,2] [,3] [,4]
## [1,]    5    6    7    8
## [2,]   10   12   14   16
## [3,]   15   18   21   24
## [4,]   20   24   28   32
> outer(x,y)#向量外积方法2
##      [,1] [,2] [,3] [,4]
## [1,]    5    6    7    8
## [2,]   10   12   14   16
## [3,]   15   18   21   24
## [4,]   20   24   28   32
> tcrossprod(x,y)#向量外积方法3
##      [,1] [,2] [,3] [,4]
## [1,]    5    6    7    8
## [2,]   10   12   14   16
## [3,]   15   18   21   24
## [4,]   20   24   28   32

向量初等数学函数运算

> x <- 1:4#直接创建
> sqrt(x)
## [1] 1.000000 1.414214 1.732051 2.000000
> x^2
## [1]  1  4  9 16
> exp(x)
## [1]  2.718282  7.389056 20.085537 54.598150
> log(x)
## [1] 0.0000000 0.6931472 1.0986123 1.3862944
> sin(x)
## [1]  0.8414710  0.9092974  0.1411200 -0.7568025
> sin(x*pi)
## [1]  1.224606e-16 -2.449213e-16  3.673819e-16 -4.898425e-16
> cos(x)
## [1]  0.5403023 -0.4161468 -0.9899925 -0.6536436
> cos(x*pi)
## [1] -1  1 -1  1

向量统计函数运算

> set.seed(1111)
> x <- rnorm(100,1,2)#100个平均值为1,标准差为2的正态分布随机数
> min(x)
## [1] -4.861693
> which.min(x)
## [1] 6
> max(x)
## [1] 6.94693
> which.max(x)
## [1] 100
> range(x)
## [1] -4.861693  6.946930
> mean(x)
## [1] 1.483015
> var(x)
## [1] 4.873137
> sd(x)
## [1] 2.207518
> median(x)
## [1] 1.359668
> summary(x)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -4.86169 -0.04547  1.35967  1.48301  2.93994  6.94693
> length(x)
## [1] 100

问题?