【发布时间】:2014-03-28 08:49:46
【问题描述】:
我在 R 中做了一些非常简单的事情,但我发现了这个我无法弄清楚的问题。 我正在对矩阵中保存的一些变量进行标准化,发现结果并没有给出我认为应该的结果。我写了一个小例子:
t = matrix(1:9, nrow = 3) ## data
t
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
现在我的问题是,为什么下面的代码没有给出相同的答案?
t[1,] - colMeans(t)
[1] -1 -1 -1
(t - colMeans(t))[1,]
[1] -1 2 5
正确答案是前者,但是我想知道是否有人可以向我解释为什么会发生后者?
如果有人可以建议一种方法来做前者而不需要任何循环(这就是我尝试后者的原因),那将不胜感激。
谢谢,
山姆
编辑
(将 t 矩阵更改为 x 以消除混淆)
t(t(x) - colMeans(x))
给出我想要的答案。这是唯一的方法吗?转换的数量似乎过多。
【问题讨论】:
-
您是否分别查看了
colMeans(t)、t[1,]和(t - colMeans(t))?那里有很多信息。 -
是的。手段是更少的列,而不是行(这是我想要的)。我试过 (t - t(colMeans(t))) 但没有解决问题。