close
許多人認為學會過了程式設計,就能夠駕馭R 語言!殊不知R 語法有其特殊性,更遑論背後的統計模型與繪圖專業了。舉例來說,下面就是標準的不良R 程式(canonical bad Rprogram),用來計算a 與b 兩向量的內積:
> (a <- 1:5)
[1] 1 2 3 4 5
> (b <- 5:1)
[1] 5 4 3 2 1
> d <- NULL
> for (i in 1:length(a)) {
+ d[i] <- a[i] * b[i]
+ }
> d
[1] 5 8 9 8 5
> s <- 0
> for (i in 1:length(d)) {
+ s <- s + d[i]
+ }
> s
[1] 35
傳統的兩次迴圈設計,當資料量大時,會大幅影響執行時間。其實善用R 的向量化(vectorization)特性,一到兩行的指令即可快速輕易地算出向量內積了。(註:因資料量很小,此例感受不到速度的差異!)
> (d <- a * b)
[1] 5 8 9 8 5
> (s <- sum(a * b))
[1] 35
以程式執行效率的觀點來看,R的世界非不得已 (指當無法運用apply系列函數與vectorization特性時) 才會使用for迴圈。
撰文者: |
文章標籤
全站熱搜