# [R] by (tapply) and for loop differences

From: Bashir Saghir (Aztek Global) <Saghir.Bashir_at_ucb-group.com>
Date: Tue 05 Jul 2005 - 20:04:01 EST

I've attached a simple example below to illustrates my problem. I get a difference in the mean of yvar, diff and the p-value using tapply & by compared to a for loop. I cannot see what I am doing wrong. Can anyone help?

> # Simulate some data - I'll do 2 simulations...
>
> xvar = rnorm(40, 20, 5)
> yvar = rnorm(40, 22, 2)
> num = factor(rep(1:2, each=20))
> sdat = data.frame(cbind(num, xvar, yvar))
>
> # Define a function to do a simple t test and return some values...
>
> kindtest = function(varx, vary){

```+    res = t.test(varx, vary)
+    x.mn = res\$estimate
+    y.mn = res\$estimate
+    diff = y.mn-x.mn
+    pval = res\$p.value
+    cat("Mean xvar =", x.mn, " Mean yvar =", y.mn)
+    cat(" diff =", diff, "  p-value=", pval, "\n\n")
+    list(x.mn=x.mn, y.mn=y.mn, diff=diff, pval=pval)
+ }

```

## Results from by and tapply

> attach(sdat)
> bres = by(xvar, num, kindtest, yvar)
Mean xvar = 19.8904 Mean yvar = 21.97729 diff = 2.086891 p-value= 0.06222805
Mean xvar = 19.88329 Mean yvar = 21.97729 diff = 2.093996 p-value= 0.05245329

> tres = tapply(xvar, num, kindtest, yvar)
Mean xvar = 19.8904 Mean yvar = 21.97729 diff = 2.086891 p-value= 0.06222805
Mean xvar = 19.88329 Mean yvar = 21.97729 diff = 2.093996 p-value= 0.05245329

> detach(sdat,1)

## Results from for

> for(i in 1:2) {

```+   subdat= subset(sdat, num==i)
+   kindtest(subdat\$xvar, subdat\$yvar)
+ }
```

Mean xvar = 19.8904 Mean yvar = 21.98615 diff = 2.095746 p-value= 0.07319223
Mean xvar = 19.88329 Mean yvar = 21.96843 diff = 2.085141 p-value= 0.05850057

OKAY - I'm going to brave and show you that I am still on version 1.9.0! I asked the IT/IS department for an upgrade when version 2 was first released! Last I heard my request was in the black hole of documented and undocumented processes to approve software upgrades... So this error may not occur in the latest version... If so, just let me know which of the above is correct (if any) and I'll just live with it (or run it at home on version 2.1.1). Thanks.

> version

_
platform i386-pc-mingw32

```arch     i386
os       mingw32
system   i386, mingw32
status
major    1
minor    9.0
year     2004
month    04
day      12
language R

```

Thanks,
Saghir

Legal Notice: This electronic mail and its attachments are i...{{dropped}}

R-help@stat.math.ethz.ch mailing list