向量化運算 (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
    

要注意一下矩陣的向量化運算*符號不是代表矩陣乘法,是單純把兩個大小相同的矩陣對應位置元素相乘。

results matching ""

    No results matching ""