使列的矩阵均值= 1

时间:2016-03-01 13:16:51

标签: r

我需要缩放矩阵,使每列的平均值为1,以便于进行交叉因子比较(我做nmf)。我只发现了比例函数,但我不知道如何使均值为1而不是0.是否可能? 感谢

2 个答案:

答案 0 :(得分:3)

这是一个未确定的问题(有多种方法可以做到这一点),但有一种可能性就是将每一列除以其平均值:

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

答案 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