[R] getting t.test to work with apply()

Petr Klasterecky klaster at karlin.mff.cuni.cz
Mon Jun 4 08:40:47 CEST 2007


Andrew Yee napsal(a):
> Hi, I'm interested in using apply() with t.test() on a data.frame.
> 
> Specifically, I'd like to use apply() to do the following:
> 
>  t.test(raw.sample[1,alive],raw.sample[1,dead])
> t.test(raw.sample[2,alive],raw.sample[2,dead])
>  t.test(raw.sample[3,alive],raw.sample[3,dead])
> etc.
> 
> I tried the following,
> 
> apply(raw.sample,1,function(x) t.test(raw.sample[,alive],raw.sample[,dead]))

Two comments:
1) apply() works on arrays. If your dataframe only has numeric values, 
turn it (or its copy) to a matrix via as.matrix(). If it has mixed 
variables, take only the numeric part for t-tests. The conversion is 
made implicitly but explicit asking for it cannot hurt.
2) the main problem - you are using a wrong argument to t.test

The call should look like
apply(as.matrix(raw.sample), 1, function(x){t.test(x[alive], x[dead])})

assuming 'alive' and 'dead' are logical vectors of the same length as 'x'.

Petr

> 
> but it gives me a list of identical results.
> 
> 
> Thanks,
> Andrew
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at stat.math.ethz.ch 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.
> 

-- 
Petr Klasterecky
Dept. of Probability and Statistics
Charles University in Prague
Czech Republic



More information about the R-help mailing list