# [R] question about scale() function

Domenico Vistocco vistocco at unicas.it
Fri Jan 4 08:45:10 CET 2008

```tom soyer wrote:
> oops, it should be: rms=(sum((x-mean(x))^2)/(length(x)-1))^(1/2)
>
sd(x) does the same thing.

domenico
> On 1/3/08, tom soyer <tom.soyer at gmail.com> wrote:
>
>> Thanks Jim. Yes it does... but I calculated the root mean square (rms),
>> and couldn't reproduce the result without multiplying the rms by 2. I don't
>> know why...
>>
>>  > x=c(2,4,3,4,5)
>>
>>> mean(x)
>>>
>> [1] 3.6
>>
>>> x-mean(x)
>>>
>> [1] -1.6  0.4 -0.6  0.4  1.4
>>
>>> scale(x)
>>>
>>            [,1]
>> [1,] -1.4032928
>> [2,]  0.3508232
>> [3,] -0.5262348
>> [4,]  0.3508232
>> [5,]  1.2278812
>> attr(,"scaled:center")
>> [1] 3.6
>> attr(,"scaled:scale")
>> [1] 1.140175
>>
>>> rms=sum((x-mean(x))^2)^(1/2)/(length(x)-1)
>>> rms
>>>
>> [1] 0.5700877
>>
>>> (x-mean(x))/rms
>>>
>> [1] -2.8065857  0.7016464 -1.0524696  0.7016464  2.4557625
>>
>>> (x-mean(x))/(rms*2)
>>>
>> [1] -1.4032928  0.3508232 -0.5262348  0.3508232  1.2278812
>>
>>
>>  On 1/3/08, jim holtman <jholtman at gmail.com> wrote:
>>
>>> Does this give you what you want?
>>>
>>>
>>>> x=c(2,4,3,4,5)
>>>> ?scale
>>>> scale(x,scale=FALSE)
>>>>
>>>     [,1]
>>> [1,] -1.6
>>> [2,]  0.4
>>> [3,] -0.6
>>> [4,]  0.4
>>> [5,]  1.4
>>> attr(,"scaled:center")
>>> [1] 3.6
>>>
>>> Default is to performance scaling: "If scale is TRUE then scaling is
>>> done by dividing the (centered) columns of x by their
>>> root-mean-square, and if scale is FALSE, no scaling is done. "
>>>
>>> On Jan 3, 2008 9:37 PM, tom soyer <tom.soyer at gmail.com> wrote:
>>>
>>>> Hi,
>>>>
>>>> The documentation for scale() states:"If center is TRUE then centering
>>>>
>>> is
>>>
>>>> done by subtracting the column means (omitting NAs) of x from their
>>>> corresponding columns". But it seems that R is subtracting something
>>>>
>>> else
>>>
>>>> instead of the column mean:
>>>>
>>>>
>>>>> x=c(2,4,3,4,5)
>>>>> mean(x)
>>>>>
>>>> [1] 3.6
>>>>
>>>>> x-mean(x)
>>>>>
>>>> [1] -1.6  0.4 -0.6  0.4  1.4
>>>>
>>>>> scale(x)
>>>>>
>>>>           [,1]
>>>> [1,] -1.4032928
>>>> [2,]  0.3508232
>>>> [3,] -0.5262348
>>>> [4,]   0.3508232
>>>> [5,]  1.2278812
>>>> attr(,"scaled:center")
>>>> [1] 3.6
>>>> attr(,"scaled:scale")
>>>> [1] 1.140175
>>>>
>>>> Notice that -1.4 is not the same as -1.6, and 1.2 is not the same as
>>>>
>>> 1.4,
>>>
>>>> etc. Does anyone know what exactly is scale() doing if it is not
>>>>
>>> subtracting
>>>
>>>> the column mean? Thanks.
>>>>
>>>> --
>>>> Tom
>>>>
>>>>        [[alternative HTML version deleted]]
>>>>
>>>> ______________________________________________
>>>> R-help at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>>
>>> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html>
>>>
>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>
>>>>
>>>
>>> --
>>> Jim Holtman
>>> Cincinnati, OH
>>> +1 513 646 9390
>>>
>>> What is the problem you are trying to solve?
>>>
>>>
>>
>> --
>> Tom
>>
>
>
>
>
>

```