官术网_书友最值得收藏!

2.10 向量的計算

2.10.1 問題

對整個向量執行計算。

2.10.2 解決方案

基本的數學運算符可以對向量中的元素逐個進行計算。許多其他的函數也能對向量元素逐個進行運算,并以向量的形式輸出結果。

2.10.3 討論

向量計算是R軟件的一大特色。所有的基本數學運算符都能應用于向量對中。這些運算符對兩個向量中相應的元素對進行計算,即對兩個向量中對應的元素進行基本運算:


v <- c(11, 12, 13, 14, 15)
w <- c(1, 2, 3, 4, 5)
v + w
#> [1] 12 14 16 18 20
v - w
#> [1] 10 10 10 10 10
v * w
#> [1] 11 24 39 56 75
v / w
#> [1] 11.00  6.00  4.33  3.50  3.00
w^v
#> [1] 1.00e+00 4.10e+03 1.59e+06 2.68e+08 3.05e+10

注意,此處結果的長度等于原始向量的長度。其原因是,結果向量中的每個元素都是由輸入向量對中對應的兩個元素計算得到的。

如果將一個向量和一個常數進行運算,則會將該向量中的每個元素與常數進行運算:


w
#> [1] 1 2 3 4 5
w + 2
#> [1] 3 4 5 6 7
w - 2
#> [1] -1  0  1  2  3
w * 2
#> [1]  2  4  6  8 10
w / 2
#> [1] 0.5 1.0 1.5 2.0 2.5
2^w
#> [1]  2  4  8 16 32

例如,可以在一個表達式中得到一個向量減去其元素均值后的向量:


w
#> [1] 1 2 3 4 5
mean(w)
#> [1] 3
w - mean(w)
#> [1] -2 -1  0  1  2

同樣,可以在一個表達式中計算向量的z分數(z-score),即將向量減去其均值并除以其標準差:


w
#> [1] 1 2 3 4 5
sd(w)
#> [1] 1.58
(w - mean(w)) / sd(w)
#> [1] -1.265 -0.632  0.000  0.632  1.265

然而,向量的運算功能遠不止對元素進行簡單運算,還有許多函數對整個向量進行運算。例如,sqrt函數和log函數都可以應用于整個向量的每個元素,并以向量的形式返回結果:


w <- 1:5
w
#> [1] 1 2 3 4 5
sqrt(w)
#> [1] 1.00 1.41 1.73 2.00 2.24
log(w)
#> [1] 0.000 0.693 1.099 1.386 1.609
sin(w)
#> [1]  0.841  0.909  0.141 -0.757 -0.959

向量運算有兩個很大的優點。第一個也是最明顯的優點是操作的簡便性,其他編程語言中需要通過循環實現的操作,在R軟件中一行命令就可以實現。第二個優點是速度。大多數R的向量化操作直接由C語言代碼實現,因此它們比你自己用R編寫的代碼快很多。

2.10.4 另請參閱

向量和常量之間的運算實際上是循環規則的一個特例,參見5.3節。

主站蜘蛛池模板: 拉萨市| 灵璧县| 卓尼县| 四川省| 清河县| 来凤县| 郸城县| 巴青县| 明水县| 河间市| 汾阳市| 托里县| 鄂伦春自治旗| 丘北县| 平罗县| 林周县| 法库县| 河北区| 略阳县| 临城县| 永修县| 海宁市| 汉源县| 松江区| 新蔡县| 象山县| 昔阳县| 克山县| 遂溪县| 亳州市| 喜德县| 黑山县| 台安县| 曲周县| 渑池县| 济源市| 滦平县| 海安县| 榆树市| 思茅市| 阜城县|