[R] strange behavior of names<-
Liaw, Andy
andy_liaw at merck.com
Mon May 10 04:41:12 CEST 2004
Dear R-help,
I've encounter what seems to me a strange problem with "names<-". Suppose I
define the function:
fun <- function(x, f) {
m <- tapply(x, f, mean)
ans <- x - m[match(f, unique(f))]
names(ans) <- names(x)
ans
}
which subtract out the means of `x' grouped by `f' (which is the same as,
e.g., resid(lm(x~f)) if `f' is a factor). If `x' does not have names, then
I'd expect the output of the function not to have names, as names(x) would
be NULL, and assigning NULL to names(ans) should wipe out the names of
`ans'. However, I get:
> x = rnorm(20)
> f = factor(sample(rep(letters[1:4], 5)))
> fun(x, f)
a b c b c c
d
-0.53791639 1.03704065 0.95727411 0.89219177 -0.04218746 0.57976675
-2.15799919
a c d a d b
d
1.28422452 -0.92881186 0.40526262 -0.13471983 -0.72599709 1.68726680
-0.95420354
a c a b b d
-2.28013373 1.02522037 0.07728352 0.54321899 0.95742354 -1.68420455
What am I missing?
[BTW, this is using the tip that Thomas Lumley posted about forming the
group means. I've wanted to write a `tsweep' function that's sort of the
cross of tapply() and sweep().]
Best,
Andy Liaw, PhD
Biometrics Research PO Box 2000, RY33-300
Merck Research Labs Rahway, NJ 07065
mailto:andy_liaw at merck.com 732-594-0820
More information about the R-help
mailing list