Skip to content
Prev 248617 / 398502 Next

sapply puzzlement

Hi,

I have this data.frame with two variables in it,
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,
V1        V2 
 9.666667 10.714286 

My intention was substracting means from z, so instictively I tried
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:
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
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.