R基礎 用sweep對矩陣按列計算

2021-09-29 13:46:51 字數 814 閱讀 7867

在我研究生一年級的時候,我用r語言分析轉錄組時遇到了乙個問題,如何對樣本按照文庫進行標準化,假設我手頭的資料如下

mdat <- matrix(c(1,2,3, 11,12,13), nrow = 2, ncol = 3)

mdat

[,1] [,2] [,3]

[1,] 1 3 12

[2,] 2 11 13

我當時用了乙個錯誤的方法

depth <-  colsums(mdat)

mdat / depth

雖然這個時候執行沒有出錯,但其實結果存在問題。因為r語言的自動補全和r語言按列操作的特性,實際上我得到的是

1 / 2  3 / 25 12 /14

2 /14 11 / 2 13 /25

當時我的解決方法是,對資料進行轉置

t(t(mdat ) / colsums(mdat))
今天我在閱讀scale的函式說明和源**時發現了乙個新的函式sweep, 能夠按行按列呼叫函式以提供的值處理原始的資料

sweep(mdat, 2, depth, "/")
通過我對源**的檢查,發現sweep本質上還是呼叫了轉置函式aperm,針對於陣列轉置,而t()是針對於矩陣轉置。因此使用sweep不會有速度上的提公升,只是**更加簡潔了。

R語言 矩陣的基礎運算

先建立乙個2 5的矩陣a x c 1 10 a matrix x,ncol 2,nrow 5,byrow t a 1 2 1,1 2 2,3 4 3,5 6 4,7 8 5,9 10再建立乙個矩陣b x c 1 10 b matrix x,ncol 2,nrow 5 b 1 2 1,1 6 2,2 ...

R語言 矩陣的基礎用法

矩陣 1.定義矩陣 m matrix c 1 10 nrow 2,ncol 5 這裡的第乙個nrow為行,ncol為列數。但是陣列的數量必須與矩陣的第乙個引數的數目相同,同時行數和列數只要列出乙個就可以 m matrix c 1 10 nrow 2 m matrix c 1 10 ncol 5 這裡...

對極幾何 本質矩陣E和基礎矩陣F

如上圖所示,給定乙個目標點p,以左攝像頭光心ol為原點。點p相對於光心ol的觀察位置為pl,相對於光心or的觀察位置為pr。點p在左攝像頭成像平面上的位置為pl,在右攝像頭成像平面上的位置為pr。注意pl pr pl pr都處於攝像機座標系,其量綱是與平移向量t相同的 pl pr在影象座標系中對應的...