R語言入門:向量的運算

向量之間的加減乘除運算:git

> x <- 1
> x
 [1]  1  2  3  4  5  6  7  8  9 10
> x=x+1
> x
 [1]  2  3  4  5  6  7  8  9 10 11
> x = 1:10
> x
 [1]  1  2  3  4  5  6  7  8  9 10
> y = seq(1,100, length.out = 10)
> y
 [1]   1  12  23  34  45  56  67  78  89 100
> x*y
 [1]    1   24   69  136  225  336  469  624  801 1000
> x**y
 [1]  1.000000e+00  4.096000e+03  9.414318e+10  2.951479e+20
 [5]  2.842171e+31  3.771117e+43  4.183778e+56  2.760699e+70
 [9]  8.464150e+84 1.000000e+100

這些代碼看起來徹底沒有任何問題,就像以前咱們已經接觸過的其餘語言的編程同樣,可是後面就有一些R語言自帶的特性了,好比說有兩個不一樣長度的向量在進行加減乘除的時候,運算的規律是小的向量不斷循環地去乘上大的向量,而且大的向量的長度必須是短的向量的整數倍,否則程序就會報錯。咱們舉個例子,假定有一個長度爲2的向量Z(1,2),以下所示:編程

z=c(1,2)
> z
[1] 1 2

咱們用這個建立好的向量去和剛纔建立的X向量進行相乘,獲得的結果以下所示:函數

> z+x
 [1]  2  4  4  6  6  8  8 10 10 12
> z*x
 [1]  1  4  3  8  5 12  7 16  9 20

很顯然R語言當中已經幫咱們作了乘法,用Z向量當中的每個component去乘或者加上X向量當中的每個component並不斷循環。若是這個時候x向量不是z向量的整數倍,那麼計算機就不知道在哪裏中止計算,就會報錯,出現如下的狀況,這是萬萬使不得的:spa

> z=c(1,2,3)
> z
[1] 1 2 3
> z*x
 [1]  1  4  9  4 10 18  7 16 27 10
Warning message:
In z * x : longer object length is not a multiple of shorter object length

咱們在R語言當中也能夠很方便的使用%in%對一個向量當中的哪些元素在另一個向量當中,以下所示:code

> c(1,2,3) %in% c(1,2,3,4)
[1] TRUE TRUE TRUE
> c(1,2,3) %in% c(1,5,6,7,8)
[1]  TRUE FALSE FALSE

判斷以後的結果則會用TRUE,FALSE顯示出來。component

在R當中也可使用==來表示判斷真假,好比說咱們能夠判斷x和y是不是兩個相同的向量,在判斷的時候咱們取x和y的向量長度都同樣,數值不同的特殊狀況,判斷的結果以下所示:blog

> x==y
 [1]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> x
 [1]  1  2  3  4  5  6  7  8  9 10
> y
 [1]   1  12  23  34  45  56  67  78  89 100

咱們還可使用log()函數來進行計算對數,裏面的參數base表示底數,不帶參數base則表示底數是天然對數e,以下所示:教程

> log(16,base=2)
[1] 4
> log(16)
[1] 2.772589
> log(16)#默認是天然對數進行計算
[1] 2.772589

下面咱們再創造一個向量對其進行運算,這裏使用了max(),min(),以及sum()求和函數,字面意思也是很容易弄明白的,以下所示:ip

> vec=1:100
> vec
  [1]   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]  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]  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72
 [73]  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96
 [97]  97  98  99 100
> sum(vec)
[1] 5050
> max(vec)
[1] 100
> min(vec)
[1] 1

R語言當中還可使用round()函數來表示保留幾位小數,在下面咱們就會遇到,以下所示:it

> var(vec)#方差
[1] 841.6667
> round(var(vec),digits = 6)
[1] 841.6667
> round(var(vec),digits = 2)
[1] 841.67
> prod(vec)#計算連乘的積
[1] 9.332622e+157
> median(vec)#計算中位數
[1] 50.5
> quantile(vec)#計算分位數
    0%    25%    50%    75%   100% 
  1.00  25.75  50.50  75.25 100.00 
> quantile(vec,c(0.2,0.4,0.9))
 20%  40%  90% 
20.8 40.6 90.1 
> t=c(1,2,3,4,5,8,3,6)
> which.max(t)
[1] 6
> which.min(t)
[1] 1

得解!今天的向量運算教程就到這裏了!

相關文章
相關標籤/搜索