2016-03-01 116 views
0

我需要缩放矩阵,使每列的平均值为1,以促进跨因子比较(我正在做nmf)。我只发现了比例函数,但我不知道如何让平均值为1而不是0。可能吗? 由于使矩阵的平均值= 1

+0

您可以将1加到比例矩阵 –

回答

1

scale()帮助:

如果center是具有长度等于x的 列数的数值矢量,则x的每一列具有从 中心从减去对应的值它。

例如:

df <- data.frame(rnorm (10 , 10), rnorm (10 , 5)) 
colMeans(df) 

df2 <- scale(df , center = colMeans(df)-1 , scale = FALSE) 

colMeans(df) 
> rnorm.10..10. rnorm.10..5. 
>  9.626982  4.657919 
colMeans(df2) 
> rnorm.10..10. rnorm.10..5. 
>    1    1 
+0

或'df2 < - 1 +比例(df,scale = FALSE)'? –

+0

是的,同样的事情。 –

3

这是一个欠定问题(不止一种方法去做一件事),但一个可能性是由它的平均分每一列:

scale(m,center=FALSE,scale=colMeans(m))