如何在使用 R 中的缩放函数后获取中心和比例

  • 本文关键字:获取 函数 缩放 r scale stat
  • 更新时间 :
  • 英文 :


这似乎是一个愚蠢的问题,但我在网上搜索了一下,但仍然没有找到足够的回复。

我的问题是:假设我们有一个矩阵M,那么我们使用scale()函数,我们如何通过编写一行代码来提取每列的中心和比例(我知道我们可以看到中心和比例..),但是我的矩阵有很多列,手动做很麻烦。

有什么想法吗?非常感谢!

您正在寻找attributes函数:

set.seed(1)
mat = matrix(rnorm(1000),,10) # Suppose you have 10 columns
s = scale(mat) # scale your data
attributes(s)#This gives you the means and the standard deviations:
$`dim`
[1] 100  10
$`scaled:center`
[1]  0.1088873669 -0.0378080766  0.0296735350  0.0516018586 -0.0391342406 -0.0445193567 -0.1995797418
[8]  0.0002549694  0.0100772648  0.0040650015
$`scaled:scale`
[1] 0.8981994 0.9578791 1.0342655 0.9916751 1.1696122 0.9661804 1.0808358 1.0973012 1.0883612 1.0548091

这些值也可以通过以下方式获得:

colMeans(mat)
[1]  0.1088873669 -0.0378080766  0.0296735350  0.0516018586 -0.0391342406 -0.0445193567 -0.1995797418
[8]  0.0002549694  0.0100772648  0.0040650015
sqrt(diag(var(mat)))
[1] 0.8981994 0.9578791 1.0342655 0.9916751 1.1696122 0.9661804 1.0808358 1.0973012 1.0883612 1.0548091

您将获得一个列表,您可以按照所需的方式进行子集化:

或者你可以做

attr(s,"scaled:center")
[1]  0.1088873669 -0.0378080766  0.0296735350  0.0516018586 -0.0391342406 -0.0445193567 -0.1995797418
[8]  0.0002549694  0.0100772648  0.0040650015
attr(s,"scaled:scale")
[1] 0.8981994 0.9578791 1.0342655 0.9916751 1.1696122 0.9661804 1.0808358 1.0973012 1.0883612 1.0548091

最新更新