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

Peter Dalgaard P.Dalgaard at biostat.ku.dk
Mon Jun 4 10:31:45 CEST 2007


Petr Klasterecky wrote:
> 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
>   
Notice also that the other apply-style functions may give an easier
route to the goal:

lapply(1:N, function(i) t.test(raw.sample[i,alive],raw.sample[i,dead]))

or (maybe, depends on raw.sample being a data frame and alive/dead being
indexing vectors)

mapply(t.test, raw.sample[,alive], raw.sample[,dead])

>   
>> 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.
>>
>>     
>
>   


-- 
   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327907



More information about the R-help mailing list