Nordlund, Dan (DSHS/RDA) NordlDJ at dshs.wa.gov
Mon Sep 14 19:21:23 CEST 2015

```Another option is

apply(X,2,function(x) x-mean(x))

Dan

Daniel Nordlund, PhD
Research and Data Analysis Division
Washington State Department of Social and Health Services

-----Original Message-----
From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Sarah Goslee
Sent: Monday, September 14, 2015 10:07 AM
To: JORGE COLACO
Cc: r-help

On Mon, Sep 14, 2015 at 11:11 AM, JORGE COLACO <j_colaco at utad.pt> wrote:
> I would greatly appreciate if you could let me know why the R does not
> make the right computations in the case below.
> Jorge Colaço

R made the correct computations: it did exactly what you told it. It isn't R's fault that what you told it isn't what you meant. You want to subtract the column means from each column; what you actual told R was to subtract Xmean from X element by element column-wise, recycling Xmean as necessary.

Here's what you meant:

X<-matrix(c(-1,0,1,-1,1,0,
0,0,1,1,1,-1,
-1,0,-1,1,0,1,
1,1,-1,-1,0,0,
0,0,1,1,-1,1),nrow=5,ncol=6,byrow=T)

Xmean <- colMeans(X)

sweep(X, 2, Xmean, "-")

Thank you for providing a simple reproducible example and clear idea of what you intended. It made answering your question very straightforward.

>
> R version 3.2.2 (2015-08-14) -- "Fire Safety"
> Copyright (C) 2015 The R Foundation for Statistical Computing
> Platform: i386-w64-mingw32/i386 (32-bit)
>
> R is free software and comes with ABSOLUTELY NO WARRANTY.
> You are welcome to redistribute it under certain conditions.
> Type 'license()' or 'licence()' for distribution details.
>
> R is a collaborative project with many contributors.
> cite R or R packages in publications.
>
> Type 'demo()' for some demos, 'help()' for on-line help, or
> 'help.start()' for an HTML browser interface to help.
> Type 'q()' to quit R.
>> X<-matrix(c(-1,0,1,-1,1,0,
> + 0,0,1,1,1,-1,
> + -1,0,-1,1,0,1,
> + 1,1,-1,-1,0,0,
> + 0,0,1,1,-1,1),nrow=5,ncol=6,byrow=T)
>
>>
> mean<-c(mean(X[,1]),mean(X[,2]),mean(X[,3]),mean(X[,4]),mean(X[,5]),me
> an(X[,6]))
>> mean
> [1] -0.2  0.2  0.2  0.2  0.2  0.2
>> X-mean
>      [,1] [,2] [,3] [,4] [,5] [,6]
> [1,] -0.8 -0.2  0.8 -1.2  0.8 -0.2
> [2,] -0.2  0.2  0.8  0.8  0.8 -1.2
> [3,] -1.2 -0.2 -0.8  0.8 -0.2  0.8
> [4,]  0.8  0.8 -1.2 -0.8 -0.2 -0.2
> [5,] -0.2 -0.2  0.8  0.8 -0.8  0.8
>>
>
> Right Result Should Be:
>
> ans =
>   -0.80000  -0.20000   0.80000  -1.20000   0.80000  -0.20000
>    0.20000  -0.20000   0.80000   0.80000   0.80000  -1.20000
>   -0.80000  -0.20000  -1.20000   0.80000  -0.20000   0.80000
>    1.20000   0.80000  -1.20000  -1.20000  -0.20000  -0.20000
>    0.20000  -0.20000   0.80000   0.80000  -1.20000   0.80000
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

--
Sarah Goslee
http://www.functionaldiversity.org

______________________________________________
R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help