[R] apply with a division

Greg Kettler gkettler at gmail.com
Fri Jul 4 00:04:19 CEST 2008


Hi,
I'd like to normalize a dataset by dividing each row by the first row.
Very simple, right?
I tried this:

> expt.fluor
  X1  X2  X3
1 124 120 134
2 165 163 174
3  52  51  43
4 179 171 166
5 239 238 235

>first.row <- expt.fluor[1,]
> normed <- apply(expt.fluor, 1, function(r) {r / first.row})
>normed
[[1]]
  X1 X2 X3
1  1  1  1

[[2]]
        X1       X2       X3
1 1.330645 1.358333 1.298507

[[3]]
         X1    X2        X3
1 0.4193548 0.425 0.3208955

[[4]]
        X1    X2       X3
1 1.443548 1.425 1.238806

[[5]]
        X1       X2       X3
1 1.927419 1.983333 1.753731

Ugly! The values are right, but why didn't I get another 2D array
back? Shouldn't the division in my inline function return a vector?

Thanks,
Greg



More information about the R-help mailing list