R語言入門 向量的運算

2021-10-03 07:31:35 字數 3338 閱讀 1702

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

> 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向量的整數倍,那麼計算機就不知道在**停止計算,就會報錯,出現以下的情況,這是萬萬使不得的:

> z=c(1,2,3)

>z

[1] 1 2 3

> z*x

[1] 1 4 9 4 10 18 7 16 27 10warning message:

in z * x : longer object length is

not a multiple of shorter object length

我們在r語言當中也可以很方便的使用%in%對乙個向量當中的哪些元素在另外乙個向量當中,如下所示:

> 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顯示出來。

在r當中也可以使用==來表示判斷真假,比如說我們可以判斷x和y是否是兩個相同的向量,在判斷的時候我們取x和y的向量長度都一樣,數值不一樣的特殊情況,判斷的結果如下所示:

> 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()求和函式,字面意思也是很容易弄明白的,如下所示:

> 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()函式來表示保留幾位小數,在下面我們就會遇到,如下所示:

> 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

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

R語言 向量

1 seq 產生有規律的數列,間距省略時預設值為1。例1 seq 10,20,0.5 例2 seq 0,by 0.03,length 15 2 rep 產生有規律的數列,重複第乙個變數若干次。例1 rep 1 3,1 3 例2 rep 1 3,rep 2,3 例3 rep 1 3,length 10...

R語言 向量

向量是以一維陣列的方法管理資料的一種物件型別。可以說向量是r語言中最基本的資料型別,很多演算法函式都是以向量的形式輸入的。向量可以是數值型 字元型 邏輯值型 t f 和複數型。seq產生等距間隔的數列,其基本形式為 seq from 1,to 1,by from to length.out 1 le...

r語言which R語言向量

向量是以一維陣列的方法管理資料的一種物件型別。可以說向量是r語言中最基本的資料型別,很多演算法函式都是以向量的形式輸入的。向量可以是數值型 字元型 邏輯值型 t f 和複數型。seq產生等距間隔的數列,其基本形式為 seq from 1,to 1,by from to length.out 1 le...