R中比例函数的统计公式

statistical formula for scale function in R

R中比例尺的数学公式是什么?我刚刚尝试了以下但它与 scale(X)

不同
 ( X-colmeans(X))/ sapply(X, sd) 

由于 matrices/data-frames 的矢量减法是按列而不是按行进行的,因此您必须在减法之前转置 matrix/data-frame,然后在最后转回。除了舍入误差外,结果与比例相同。这显然是一件麻烦事,我想这就是为什么有一个方便的功能。

x <- as.data.frame(matrix(sample(100), 10 , 10))
s <- scale(x)
my_s <- t((t(x) - colMeans(x))/sapply(x, sd))

all(s - my_s < 1e-15)
# [1] TRUE

1) 对每一列减去其均值,然后除以其标准差:

apply(X, 2, function(x) (x - mean(x)) / sd(x))

2) 另一种编写方法与问题中的代码非常接近,如下所示。这与问题之间的主要区别在于问题的代码按列回收(在这种情况下不正确),而以下代码按行回收。

nr <- nrow(X)
nc <- ncol(X)
(X - matrix(colMeans(X), nr, nc, byrow = TRUE)) / 
  matrix(apply(X, 2, sd), nr, nc, byrow = TRUE)