簡體   English   中英

R函數計算偏差矩陣

[英]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中用慣用的語言編寫此函數(也許使用函數式編程)嗎?

使用sweepcolMeans

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM