R 使用列平均值将函数应用于矩阵中的所有列

R 使用列平均值将函数应用于矩阵中的所有列,r,apply,lapply,sapply,R,Apply,Lapply,Sapply,我有一个矩阵m(三列圆锥列,每列由整数组成,平均值分别为5、10和15): m一种方法是使用apply(m,2,函数(x)(x-均值(x)) 另一种方法是使用您正在寻找的t(t(m)-colMeans(m)) scale(m,center=T,scale=F)[,] 另一种方法是 sweep(m,2,colMeans(m)) 但速度不如量表仅适用于初学者(像我一样):复制粘贴变量将是应用(m,2,函数(x)(x-均值(x))谢谢你的建议,下次我会更加小心。享受你的R学习!请注意,在使用20

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


m一种方法是使用
apply(m,2,函数(x)(x-均值(x))

另一种方法是使用您正在寻找的
t(t(m)-colMeans(m))

scale(m,center=T,scale=F)[,]
另一种方法是

sweep(m,2,colMeans(m)) 

但速度不如
量表

仅适用于初学者(像我一样):复制粘贴变量将是
应用(m,2,函数(x)(x-均值(x))
谢谢你的建议,下次我会更加小心。享受你的R学习!请注意,在使用200x50矩阵的基准测试中,使用
colMeans
的矢量化解决方案比
apply
快约200倍。始终尝试对R使用矢量化操作!是的,所以我添加了一个矢量化的解决方案。我发布“申请”是因为他要求一个“申请”解决方案。顺便说一句,在使用矢量化操作时,有没有改变广播方向的建议?(我讨厌两次变换矩阵)@VicaYang我不想批评你的答案,我只是想向Lukas指出向量化的解决方案要快得多:)
scale(m,center=T,scale=F)[,]
sweep(m,2,colMeans(m))