向量化運算 (vectorized operation)
相等的兩個向量(vector、matrix...)可以直接進行加減乘除,R會自動分配向量內相對應位置的元素進行平行運算,以vector做例子來說。
傳統做法
#下面有兩個一樣大小的向量A、B #這兩個容器所裝載的物件型態之間可以進行計算 > vectorA <- 1:5 > vectorB <- 6:10 #創造另一個向量作為容納計算結果的容器 #物件種類:必須設定與vectorA、vectorB的運算結果相同。 #維度大小:必須跟vectorA、vectorB相同。 > vectorTemp <- numeric(length(vectorA)) #利用for loop把vectorA、vectorB的運算結果賦值給vectorTemp > for(i in seq_along(vectorTemp)){ + vectorTemp[i] = vectorA[i] + vectorB[i] + } > vectorTemp [1] 7 9 11 13 15
向量化操作
> vectorA <- 1:5 > vectorB <- 6:10 > vectorTemp <- vectorA + vectorB > vectorTemp [1] 7 9 11 13 15
要注意一下矩陣的向量化運算*符號不是代表矩陣乘法,是單純把兩個大小相同的矩陣對應位置元素相乘。