[英]R function to compute deviation matrix
我寫了一個函數來計算矩陣,其中每一列是對應的輸入矩陣列減去列均值。
# compute the deviation matrix
deviation <- function(X) {
one <- rep(1, nrow(X))
n <- ncol(X)
d <- matrix(data = NA, nrow = nrow(X), ncol = ncol(X))
for(i in seq.int(from = 1, to = n)) {
d[,i] <- X[,i] - mean(X[,i], na.rm = TRUE) * one
}
d
}
可以在R中用慣用的語言編寫此函數(也許使用函數式編程)嗎?
使用sweep
和colMeans
:
sweep(mat, 2, colMeans(mat))
默認情況下, sweep
使用-
或減法函數,以colMeans
計算的列均值為colMeans
,取自每列中的值( MARGIN=2
)。 給出相同的結果:
mat <- matrix(1:12,nrow=3)
deviation(mat)
# [,1] [,2] [,3] [,4]
#[1,] -1 -1 -1 -1
#[2,] 0 0 0 0
#[3,] 1 1 1 1
sweep(mat, 2, colMeans(mat))
# [,1] [,2] [,3] [,4]
#[1,] -1 -1 -1 -1
#[2,] 0 0 0 0
#[3,] 1 1 1 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.