使用列方法将函数应用于矩阵中的所有列

Luk*_*kas 0 r apply lapply sapply

我有一个矩阵m(由三列组成,每列由整数组成,平均值分别为5,10和15):

m <- round(matrix(data=cbind(rnorm(30, 5), rnorm(30, 10), rnorm(30, 15)), nrow=30, ncol=3), 0)

现在,我希望有一个与m相同尺寸的矩阵,其中每个值x计算为x减去找到x的列的平均值.如何才能做到这一点?我尝试过应用各种应用函数(具体来说,我一直在查看user3640617User60的两个问题),但问题似乎是我不能使用行的平均值作为参数sapply,lapply或者vapply......

示例:如果head(m)

     [,1] [,2] [,3]
[1,]    6   11   14
[2,]    6    8   16
[3,]    6   11   15
[4,]    6   10   17
[5,]    5    9   15
[6,]    3   10   15
Run Code Online (Sandbox Code Playgroud)

我想得到

     [,1] [,2] [,3]
[1,]    1    1   -1
[2,]    1   -2    1
[3,]    1    1    0
[4,]    1    0    2
[5,]    0   -1    0
[6,]   -2    0    0
Run Code Online (Sandbox Code Playgroud)

Vic*_*ang 5

一种方法是使用 apply(m, 2, function(x)(x-mean(x)))

另一种方法是使用 t(t(m)-colMeans(m))