- R語言經典實例(原書第2版)
- (美)J.D.隆 保羅·蒂特
- 724字
- 2020-08-03 16:43:29
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節。
推薦閱讀
- The Supervised Learning Workshop
- Python程序設計教程(第2版)
- Spring 5.0 By Example
- Python數據分析基礎
- 新一代通用視頻編碼H.266/VVC:原理、標準與實現
- Learning Bayesian Models with R
- 匯編語言程序設計(第2版)
- Lua程序設計(第4版)
- HTML5 and CSS3 Transition,Transformation,and Animation
- 深入淺出Serverless:技術原理與應用實踐
- C語言程序設計實驗指導 (第2版)
- Bootstrap 4 Cookbook
- 智能手機APP UI設計與應用任務教程
- C語言程序設計教程
- Building a Media Center with Raspberry Pi