Hi, I have this data.frame with two variables in it,
> z V1 V2 1 10 8 2 NA 18 3 9 7 4 3 NA 5 NA 10 6 11 12 7 13 9 8 12 11 and a vector of means, > means <- apply(z, 2, function (col) mean(na.omit(col))) > means V1 V2 9.666667 10.714286 My intention was substracting means from z, so instictively I tried > z-means V1 V2 1 0.3333333 -1.6666667 2 NA 7.2857143 3 -0.6666667 -2.6666667 4 -7.7142857 NA 5 NA 0.3333333 6 0.2857143 1.2857143 7 3.3333333 -0.6666667 8 1.2857143 0.2857143 But this is completely wrong. sapply() gives the same result: > sapply(z, function(row) row - means) V1 V2 [1,] 0.3333333 -1.6666667 [2,] NA 7.2857143 [3,] -0.6666667 -2.6666667 [4,] -7.7142857 NA [5,] NA 0.3333333 [6,] 0.2857143 1.2857143 [7,] 3.3333333 -0.6666667 [8,] 1.2857143 0.2857143 So, what is going on here? The following appears to work > z-matrix(means,ncol=2)[rep(1, dim(z)[1]),] V1 V2 1 0.3333333 -2.7142857 2 NA 7.2857143 3 -0.6666667 -3.7142857 4 -6.6666667 NA 5 NA -0.7142857 6 1.3333333 1.2857143 7 3.3333333 -1.7142857 8 2.3333333 0.2857143 but I think it's rather cumbersome, surely there must be a cleaner way to do it. -- Ernest ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.